From d959adde361bfa93524238d0065e8ed221b113f7 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Wed, 9 May 2018 06:07:30 +0100 Subject: [PATCH] issue DB schema statements each within savepoints --- Changes | 2 ++ lib/App/Netdisco/DB.pm | 4 ++-- lib/App/Netdisco/DB/SchemaVersioned.pm | 17 +++++++++++++++++ .../App-Netdisco-DB-52-53-PostgreSQL.sql | 13 +++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 lib/App/Netdisco/DB/SchemaVersioned.pm create mode 100644 share/schema_versions/App-Netdisco-DB-52-53-PostgreSQL.sql diff --git a/Changes b/Changes index abb81426..bdf4eff5 100644 --- a/Changes +++ b/Changes @@ -5,10 +5,12 @@ * #408 improvements to MakeRancidConf (earendilfr) * #410 improvements to Undiscovered Neighbors report * device port search will match on Description as well as Port + * issue DB schema statements each within savepoints [BUG FIXES] * #414 clicking discover button with empty field causes crash + * #415 neighbors map display is blank 2.039028 - 2018-05-05 diff --git a/lib/App/Netdisco/DB.pm b/lib/App/Netdisco/DB.pm index 9bb97495..008b5369 100644 --- a/lib/App/Netdisco/DB.pm +++ b/lib/App/Netdisco/DB.pm @@ -11,7 +11,7 @@ __PACKAGE__->load_namespaces( ); our # try to hide from kwalitee - $VERSION = 52; # schema version used for upgrades, keep as integer + $VERSION = 53; # schema version used for upgrades, keep as integer use Path::Class; use File::ShareDir 'dist_dir'; @@ -20,7 +20,7 @@ our $schema_versions_dir = Path::Class::Dir->new( dist_dir('App-Netdisco') ) ->subdir('schema_versions')->stringify; __PACKAGE__->load_components(qw/ - Schema::Versioned + +App::Netdisco::DB::SchemaVersioned +App::Netdisco::DB::ExplicitLocking /); diff --git a/lib/App/Netdisco/DB/SchemaVersioned.pm b/lib/App/Netdisco/DB/SchemaVersioned.pm new file mode 100644 index 00000000..9e4443cd --- /dev/null +++ b/lib/App/Netdisco/DB/SchemaVersioned.pm @@ -0,0 +1,17 @@ +package App::Netdisco::DB::SchemaVersioned; + +use strict; +use warnings; + +use base 'DBIx::Class::Schema::Versioned'; + +use Try::Tiny; +use DBIx::Class::Carp; + +sub apply_statement { + my ($self, $statement) = @_; + try { $self->storage->txn_do(sub { $self->storage->dbh->do($statement) }) } + catch { carp "SQL was: $statement" if $ENV{DBIC_TRACE} }; +} + +1; diff --git a/share/schema_versions/App-Netdisco-DB-52-53-PostgreSQL.sql b/share/schema_versions/App-Netdisco-DB-52-53-PostgreSQL.sql new file mode 100644 index 00000000..8a6501cd --- /dev/null +++ b/share/schema_versions/App-Netdisco-DB-52-53-PostgreSQL.sql @@ -0,0 +1,13 @@ +BEGIN; + +ALTER TABLE netmap_positions DROP CONSTRAINT "netmap_positions_device_groups_vlan_key"; + +ALTER TABLE netmap_positions RENAME COLUMN device_groups TO host_groups; + +ALTER TABLE netmap_positions ALTER COLUMN host_groups SET DEFAULT '{}'; + +ALTER TABLE netmap_positions ADD COLUMN "device" inet; + +ALTER TABLE netmap_positions ADD COLUMN "locations" text[] DEFAULT '{}' NOT NULL; + +COMMIT;