"""Added service field option in server table (RM#3140) Revision ID: 50aad68f99c2 Revises: 02b9dccdcfcb Create Date: 2018-03-07 11:53:57.584280 """ from pgadmin.model import db # revision identifiers, used by Alembic. revision = '50aad68f99c2' down_revision = '02b9dccdcfcb' branch_labels = None depends_on = None def upgrade(): # To Save previous data db.engine.execute("ALTER TABLE server RENAME TO server_old") # With service file some fields won't be mandatory as user can provide # them using service file. Removed NOT NULL constraint from few columns db.engine.execute(""" CREATE TABLE server ( id INTEGER NOT NULL, user_id INTEGER NOT NULL, servergroup_id INTEGER NOT NULL, name VARCHAR(128) NOT NULL, host VARCHAR(128), port INTEGER NOT NULL CHECK(port >= 1024 AND port <= 65534), maintenance_db VARCHAR(64), username VARCHAR(64) NOT NULL, password VARCHAR(64), role VARCHAR(64), ssl_mode VARCHAR(16) NOT NULL CHECK(ssl_mode IN ( 'allow' , 'prefer' , 'require' , 'disable' , 'verify-ca' , 'verify-full' ) ), comment VARCHAR(1024), discovery_id VARCHAR(128), hostaddr TEXT(1024), db_res TEXT, passfile TEXT, sslcert TEXT, sslkey TEXT, sslrootcert TEXT, sslcrl TEXT, sslcompression INTEGER DEFAULT 0, bgcolor TEXT(10), fgcolor TEXT(10), PRIMARY KEY(id), FOREIGN KEY(user_id) REFERENCES user(id), FOREIGN KEY(servergroup_id) REFERENCES servergroup(id) ) """) # Copy old data again into table db.engine.execute(""" INSERT INTO server ( id,user_id, servergroup_id, name, host, port, maintenance_db, username, ssl_mode, comment, password, role, discovery_id, hostaddr, db_res, passfile, sslcert, sslkey, sslrootcert, sslcrl, bgcolor, fgcolor ) SELECT id,user_id, servergroup_id, name, host, port, maintenance_db, username, ssl_mode, comment, password, role, discovery_id, hostaddr, db_res, passfile, sslcert, sslkey, sslrootcert, sslcrl, bgcolor, fgcolor FROM server_old""") # Remove old data db.engine.execute("DROP TABLE server_old") # Add column for Service db.engine.execute( 'ALTER TABLE server ADD COLUMN service TEXT' ) def downgrade(): # pgAdmin only upgrades, downgrade not implemented. pass