diff options
author | Janik Kleinhoff <ilbelkyr@shalture.org> | 2017-02-13 21:51:10 +0000 |
---|---|---|
committer | Janik Kleinhoff <ilbelkyr@shalture.org> | 2017-02-13 22:17:14 +0000 |
commit | ecb16565531b349acda366515ebb2f9fc1cc24a3 (patch) | |
tree | 69630bcddc86b035e2285deee5aa74a32769ddb0 | |
parent | e763ec8c425f73eb96adc5265ae1258b697a3ea6 (diff) | |
download | antispammeta-ecb16565531b349acda366515ebb2f9fc1cc24a3.tar.bz2 antispammeta-ecb16565531b349acda366515ebb2f9fc1cc24a3.tar.xz antispammeta-ecb16565531b349acda366515ebb2f9fc1cc24a3.tar.zst |
DB: fix major fuckup
"id" in the alertlog table refers to the ID name of the alert rule that
triggered, **not** to some sort of unique ID.
This commit rewrites the database schema history used by
DBIx::Class::DeploymentHandler as the previous schemata were utterly
useless (and, in fact, seem to be undeployable).
@Unit193, @Xenthys Clearly you managed to deploy a database somehow. If
you used the legacy `DATABASE.SCHEMA` file and `bin/db_legacy`, you
should be able to update via `bin/db_upgrade`; I've tested to verify
this. (If you //haven't// run `db_legacy` yet, make sure to update to
exactly de9f3deabe35, run `db_legacy`, then update to this commit and
proceed with `db_upgrade`.)
If you used the `db_deploy` script, may Cthulhu have mercy on your soul:
I'm pretty sure that would not actually have worked. That said, it's my
mistake, so if you require further assistance, feel free to poke me on
freenode.
-rwxr-xr-x | bin/db_legacy | 3 | ||||
-rw-r--r-- | lib/ASM/DB.pm | 2 | ||||
-rw-r--r-- | lib/ASM/DB/Result/Alertlog.pm | 3 | ||||
-rw-r--r-- | sql/_source/deploy/1/001-auto.yml | 16 | ||||
-rw-r--r-- | sql/_source/deploy/2/001-auto.yml | 16 | ||||
-rw-r--r-- | sql/_source/deploy/3/001-auto-__VERSION.yml | 91 | ||||
-rw-r--r-- | sql/_source/deploy/3/001-auto.yml | 387 |
7 files changed, 487 insertions, 31 deletions
diff --git a/bin/db_legacy b/bin/db_legacy index 6f0208c..3206d33 100755 --- a/bin/db_legacy +++ b/bin/db_legacy @@ -24,8 +24,9 @@ my $dh = DBIx::Class::DeploymentHandler->new({ schema => $schema, schema_version => '' . $schema->schema_version, sql_translator_args => { add_drop_table => 0, quote_identifiers => 1 }, + databases => [], + ignore_ddl => 1, }); -$dh->prepare_version_storage_install; $dh->install_version_storage; $dh->add_database_version({ version => 1 }); diff --git a/lib/ASM/DB.pm b/lib/ASM/DB.pm index 84f323b..cc9906c 100644 --- a/lib/ASM/DB.pm +++ b/lib/ASM/DB.pm @@ -1,5 +1,5 @@ use utf8; -package ASM::DB 2; +package ASM::DB 3; use strict; use warnings; diff --git a/lib/ASM/DB/Result/Alertlog.pm b/lib/ASM/DB/Result/Alertlog.pm index 8ce22ff..f7155df 100644 --- a/lib/ASM/DB/Result/Alertlog.pm +++ b/lib/ASM/DB/Result/Alertlog.pm @@ -23,8 +23,9 @@ __PACKAGE__->add_columns( level => { data_type => 'tinytext', is_nullable => 0 }, id => { data_type => 'tinytext', is_nullable => 0 }, reason => { data_type => 'text', is_nullable => 0 }, + sqlid => { data_type => 'bigint', is_auto_increment => 1, is_nullable => 0 }, ); -__PACKAGE__->set_primary_key('id'); +__PACKAGE__->set_primary_key('sqlid'); 1; diff --git a/sql/_source/deploy/1/001-auto.yml b/sql/_source/deploy/1/001-auto.yml index 6a31fe8..9dc9bf6 100644 --- a/sql/_source/deploy/1/001-auto.yml +++ b/sql/_source/deploy/1/001-auto.yml @@ -186,19 +186,7 @@ schema: options: [] order: 1 alertlog: - constraints: - - deferrable: 1 - expression: '' - fields: - - id - match_type: '' - name: '' - on_delete: '' - on_update: '' - options: [] - reference_fields: [] - reference_table: '' - type: PRIMARY KEY + constraints: [] fields: channel: data_type: text @@ -234,7 +222,7 @@ schema: data_type: tinytext default_value: ~ is_nullable: 0 - is_primary_key: 1 + is_primary_key: 0 is_unique: 0 name: id order: 8 diff --git a/sql/_source/deploy/2/001-auto.yml b/sql/_source/deploy/2/001-auto.yml index f65e9ea..5a58b43 100644 --- a/sql/_source/deploy/2/001-auto.yml +++ b/sql/_source/deploy/2/001-auto.yml @@ -186,19 +186,7 @@ schema: options: [] order: 1 alertlog: - constraints: - - deferrable: 1 - expression: '' - fields: - - id - match_type: '' - name: '' - on_delete: '' - on_update: '' - options: [] - reference_fields: [] - reference_table: '' - type: PRIMARY KEY + constraints: [] fields: channel: data_type: text @@ -234,7 +222,7 @@ schema: data_type: tinytext default_value: ~ is_nullable: 0 - is_primary_key: 1 + is_primary_key: 0 is_unique: 0 name: id order: 8 diff --git a/sql/_source/deploy/3/001-auto-__VERSION.yml b/sql/_source/deploy/3/001-auto-__VERSION.yml new file mode 100644 index 0000000..907f443 --- /dev/null +++ b/sql/_source/deploy/3/001-auto-__VERSION.yml @@ -0,0 +1,91 @@ +--- +schema: + procedures: {} + tables: + dbix_class_deploymenthandler_versions: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 1 + expression: '' + fields: + - version + match_type: '' + name: dbix_class_deploymenthandler_versions_version + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + ddl: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: ddl + order: 3 + size: + - 0 + id: + data_type: int + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + upgrade_sql: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: upgrade_sql + order: 4 + size: + - 0 + version: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: version + order: 2 + size: + - 50 + indices: [] + name: dbix_class_deploymenthandler_versions + options: [] + order: 1 + triggers: {} + views: {} +translator: + add_drop_table: 0 + filename: ~ + no_comments: 0 + parser_args: + sources: + - __VERSION + parser_type: SQL::Translator::Parser::DBIx::Class + producer_args: {} + producer_type: SQL::Translator::Producer::YAML + show_warnings: 0 + trace: 0 + version: 0.11021 diff --git a/sql/_source/deploy/3/001-auto.yml b/sql/_source/deploy/3/001-auto.yml new file mode 100644 index 0000000..76e5409 --- /dev/null +++ b/sql/_source/deploy/3/001-auto.yml @@ -0,0 +1,387 @@ +--- +schema: + procedures: {} + tables: + actionlog: + constraints: + - deferrable: 1 + expression: '' + fields: + - index + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + fields: + account: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: account + order: 11 + size: + - 17 + action: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: action + order: 3 + size: + - 20 + byaccount: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: byaccount + order: 16 + size: + - 17 + bygecos: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: bygecos + order: 15 + size: + - 512 + byhost: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: byhost + order: 14 + size: + - 64 + bynick: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: bynick + order: 12 + size: + - 17 + byuser: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: byuser + order: 13 + size: + - 11 + channel: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: channel + order: 5 + size: + - 51 + gecos: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: gecos + order: 10 + size: + - 512 + host: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: host + order: 8 + size: + - 64 + index: + data_type: bigint + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: index + order: 1 + size: + - 0 + ip: + data_type: integer + default_value: ~ + extra: + unsigned: 1 + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: ip + order: 9 + size: + - 0 + nick: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: nick + order: 6 + size: + - 17 + reason: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: reason + order: 4 + size: + - 512 + time: + data_type: timestamp + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: time + order: 2 + size: + - 0 + user: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: user + order: 7 + size: + - 11 + indices: [] + name: actionlog + options: [] + order: 1 + alertlog: + constraints: + - deferrable: 1 + expression: '' + fields: + - sqlid + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + fields: + channel: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: channel + order: 2 + size: + - 0 + gecos: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: gecos + order: 6 + size: + - 0 + host: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: host + order: 5 + size: + - 0 + id: + data_type: tinytext + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: id + order: 8 + size: + - 0 + level: + data_type: tinytext + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: level + order: 7 + size: + - 0 + nick: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: nick + order: 3 + size: + - 0 + reason: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: reason + order: 9 + size: + - 0 + sqlid: + data_type: bigint + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: sqlid + order: 10 + size: + - 0 + time: + data_type: timestamp + default_value: !!perl/ref + =: current_timestamp + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: time + order: 1 + size: + - 0 + user: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: user + order: 4 + size: + - 0 + indices: [] + name: alertlog + options: [] + order: 2 + users: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 1 + expression: '' + fields: + - name + match_type: '' + name: uniq_user_name + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + id: + data_type: bigint + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + name: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: name + order: 2 + size: + - 20 + passphrase: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: passphrase + order: 3 + size: + - 0 + indices: [] + name: users + options: [] + order: 3 + triggers: {} + views: {} +translator: + add_drop_table: 0 + filename: ~ + no_comments: 0 + parser_args: + sources: + - Actionlog + - Alertlog + - User + parser_type: SQL::Translator::Parser::DBIx::Class + producer_args: {} + producer_type: SQL::Translator::Producer::YAML + show_warnings: 0 + trace: 0 + version: 0.11021 |