mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-01-08 15:13:10 -06:00
749138791a
2) Fixed integrity error while removing server when using an external database. 3) Remove the length of the password column of the server and the shared server table.
183 lines
7.2 KiB
Python
183 lines
7.2 KiB
Python
##########################################################################
|
|
#
|
|
# pgAdmin 4 - PostgreSQL Tools
|
|
#
|
|
# Copyright (C) 2013 - 2022, The pgAdmin Development Team
|
|
# This software is released under the PostgreSQL Licence
|
|
#
|
|
##########################################################################
|
|
|
|
"""Update DB to version 14
|
|
|
|
Revision ID: 09d53fca90c7
|
|
Revises: fdc58d9bd449
|
|
Create Date: 2017-03-13 12:27:30.543908
|
|
|
|
"""
|
|
import base64
|
|
import os
|
|
import config
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
from pgadmin.model import db, Server
|
|
from pgadmin.setup import get_version_for_migration
|
|
|
|
# revision identifiers, used by Alembic.
|
|
|
|
revision = '09d53fca90c7'
|
|
down_revision = 'fdc58d9bd449'
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade():
|
|
version = get_version_for_migration(op)
|
|
# Changes introduced in schema version 2
|
|
if version < 2:
|
|
# Create the 'server' table
|
|
db.metadata.create_all(db.engine, tables=[Server.__table__])
|
|
if version < 3:
|
|
op.add_column('server', sa.Column('comment', sa.String(length=1024)))
|
|
if version < 4:
|
|
op.add_column('server', sa.Column('password', sa.String()))
|
|
if version < 5:
|
|
op.add_column('server', sa.Column('role', sa.String(length=64)))
|
|
if version < 6:
|
|
with op.batch_alter_table("server") as batch_op:
|
|
batch_op.create_check_constraint(
|
|
"ck_port_range",
|
|
"port >= 1024 AND port <= 65535"
|
|
)
|
|
|
|
batch_op.create_check_constraint(
|
|
"ck_ssl_mode",
|
|
"ssl_mode IN ('allow', 'prefer', 'require', 'disable', \
|
|
'verify-ca', 'verify-full')"
|
|
)
|
|
if version < 8:
|
|
op.create_table(
|
|
'module_preference',
|
|
sa.Column('id', sa.Integer(), nullable=False, autoincrement=True),
|
|
sa.Column('name', sa.String(length=256), nullable=False),
|
|
sa.PrimaryKeyConstraint('id'))
|
|
|
|
op.create_table(
|
|
'preference_category',
|
|
sa.Column('id', sa.Integer(), nullable=False, autoincrement=True),
|
|
sa.Column('mid', sa.Integer(),),
|
|
sa.Column('name', sa.String(length=256), nullable=False),
|
|
sa.ForeignKeyConstraint(['mid'], ['module_preference.id'], ),
|
|
sa.PrimaryKeyConstraint('id'))
|
|
|
|
op.create_table(
|
|
'preferences',
|
|
sa.Column('id', sa.Integer(), nullable=False, autoincrement=True),
|
|
sa.Column('cid', sa.Integer(), nullable=False),
|
|
sa.Column('name', sa.String(length=256), nullable=False),
|
|
sa.ForeignKeyConstraint(['cid'], ['preference_category.id'], ),
|
|
sa.PrimaryKeyConstraint('id'))
|
|
|
|
op.create_table(
|
|
'user_preferences',
|
|
sa.Column('pid', sa.Integer(), nullable=False),
|
|
sa.Column('uid', sa.Integer(), nullable=False),
|
|
sa.Column('value', sa.String(length=1024), nullable=False),
|
|
sa.ForeignKeyConstraint(['pid'], ['preferences.id'],
|
|
ondelete='CASCADE'),
|
|
sa.ForeignKeyConstraint(['uid'], ['user.id'], ondelete='CASCADE'),
|
|
sa.PrimaryKeyConstraint('pid', 'uid'))
|
|
|
|
if version < 9:
|
|
op.create_table(
|
|
'debugger_function_arguments',
|
|
sa.Column('server_id', sa.Integer(), nullable=False),
|
|
sa.Column('database_id', sa.Integer(), nullable=False),
|
|
sa.Column('schema_id', sa.Integer(), nullable=False),
|
|
sa.Column('function_id', sa.Integer(), nullable=False),
|
|
sa.Column('arg_id', sa.Integer(), nullable=False),
|
|
sa.Column('is_null', sa.Integer(), nullable=False),
|
|
sa.Column('is_expression', sa.Integer(), nullable=False),
|
|
sa.Column('use_default', sa.Integer()),
|
|
sa.Column('value', sa.String(), nullable=False),
|
|
sa.CheckConstraint('is_null >= 0 AND is_null <= 1'),
|
|
sa.CheckConstraint('is_expression >= 0 AND is_expression <= 1'),
|
|
sa.CheckConstraint('use_default >= 0 AND use_default <= 1'),
|
|
sa.PrimaryKeyConstraint('server_id', 'database_id', 'schema_id',
|
|
'function_id', 'arg_id'))
|
|
if version < 10:
|
|
op.create_table(
|
|
'process',
|
|
sa.Column('user_id', sa.Integer(), nullable=False),
|
|
sa.Column('pid', sa.String(), nullable=False),
|
|
sa.Column('desc', sa.String(), nullable=False),
|
|
sa.Column('command', sa.String(), nullable=False),
|
|
sa.Column('arguments', sa.String()),
|
|
sa.Column('start_time', sa.String()),
|
|
sa.Column('end_time', sa.String()),
|
|
sa.Column('logdir', sa.String()),
|
|
sa.Column('exit_code', sa.Integer()),
|
|
sa.Column('acknowledge', sa.String()),
|
|
sa.ForeignKeyConstraint(['user_id'], ['user.id'],
|
|
ondelete='CASCADE'),
|
|
sa.PrimaryKeyConstraint('pid'))
|
|
|
|
if version < 11:
|
|
# get metadata from current connection
|
|
meta = sa.MetaData(bind=op.get_bind())
|
|
# define table representation
|
|
meta.reflect(only=('role',))
|
|
role_table = sa.Table('role', meta)
|
|
|
|
op.execute(
|
|
role_table.update().where(role_table.c.name == 'Administrators')
|
|
.values(name='Administrator',
|
|
description='pgAdmin Administrator Role'))
|
|
|
|
op.bulk_insert(role_table,
|
|
[{'name': 'User', 'description': 'pgAdmin User Role'}])
|
|
|
|
if version < 13:
|
|
op.add_column('server', sa.Column('discovery_id', sa.String()))
|
|
|
|
if version < 14:
|
|
keys_table = op.create_table(
|
|
'keys',
|
|
sa.Column('name', sa.String(), nullable=False),
|
|
sa.Column('value', sa.String(), nullable=False),
|
|
sa.PrimaryKeyConstraint('name'))
|
|
|
|
secret_key = base64.urlsafe_b64encode(os.urandom(32)).decode()
|
|
if hasattr(config, 'SECRET_KEY'):
|
|
secret_key = config.SECRET_KEY
|
|
|
|
# If SECURITY_PASSWORD_SALT is not in the config, but we're upgrading,
|
|
# then it must (unless the user edited the main config - which they
|
|
# shouldn't have done) have been at it's default value, so we'll use
|
|
# that. Otherwise, use whatever we can find in the config.
|
|
security_password_salt = 'SuperSecret3'
|
|
if hasattr(config, 'SECURITY_PASSWORD_SALT'):
|
|
security_password_salt = config.SECURITY_PASSWORD_SALT
|
|
|
|
op.bulk_insert(keys_table,
|
|
[{'name': 'CSRF_SESSION_KEY', 'value':
|
|
base64.urlsafe_b64encode(os.urandom(32)).decode()},
|
|
{'name': 'SECRET_KEY', 'value': secret_key},
|
|
{'name': 'SECURITY_PASSWORD_SALT',
|
|
'value': security_password_salt}])
|
|
|
|
# get metadata from current connection
|
|
meta = sa.MetaData(bind=op.get_bind())
|
|
# define table representation
|
|
meta.reflect(only=('version',))
|
|
version_table = sa.Table('version', meta)
|
|
|
|
op.execute(
|
|
version_table.update().where(version_table.c.name == 'ConfigDB')
|
|
.values(value=config.SETTINGS_SCHEMA_VERSION))
|
|
# ### end Alembic commands ###
|
|
|
|
|
|
def downgrade():
|
|
# pgAdmin only upgrades, downgrade not implemented.
|
|
pass
|