def upgrade(active_plugins=None, options=None): op.alter_column('vnf_lcm_filters', 'subscription_uuid', type_=types.Uuid(length=36), existing_type=sa.String(length=255), nullable=False) sta_str = "json_unquote(json_extract('filter','$.operationTypes'))" op.add_column( 'vnf_lcm_filters', sa.Column('operation_types', sa.LargeBinary(length=65536), sa.Computed(sta_str))) op.add_column( 'vnf_lcm_filters', sa.Column('operation_types_len', sa.Integer, sa.Computed("ifnull(json_length('operation_types'),0)"))) op.drop_column('vnf_lcm_filters', 'operation_states') op.drop_column('vnf_lcm_filters', 'operation_states_len') op.alter_column('vnf_lcm_op_occs', 'operation_state', type_=sa.String(length=16), existing_type=sa.String(length=255)) op.alter_column('vnf_lcm_op_occs', 'operation', type_=sa.String(length=16),existing_type=sa.String(length=255)) op.add_column('vnf_lcm_op_occs', sa.Column('is_cancel_pending', sa.Boolean, nullable=False)), op.add_column('vnf_lcm_op_occs', sa.Column('resource_changes', sa.JSON(), nullable=True)) op.add_column('vnf_lcm_op_occs', sa.Column('error_point', sa.Integer, nullable=True)) op.add_column('vnf_lcm_op_occs', sa.Column('changed_info', sa.JSON(), nullable=True)) op.add_column('vnf_lcm_op_occs', sa.Column('created_at', sa.DateTime(), nullable=False)) op.add_column('vnf_lcm_op_occs', sa.Column('updated_at', sa.DateTime(), nullable=True)) op.add_column('vnf_lcm_op_occs', sa.Column('deleted_at', sa.DateTime(), nullable=True)) pass
def test_remove_computed_column(self): m1 = MetaData() m2 = MetaData() Table( "user", m1, Column("id", Integer, primary_key=True), Column("foo", Integer, sa.Computed("5")), ) Table("user", m2, Column("id", Integer, primary_key=True)) diffs = self._fixture(m1, m2) eq_(diffs[0][0], "remove_column") eq_(diffs[0][2], "user") c = diffs[0][3] eq_(c.name, "foo") if config.requirements.computed_reflects_normally.enabled: is_true(isinstance(c.computed, sa.Computed)) else: is_(c.computed, None) if config.requirements.computed_reflects_as_server_default.enabled: is_true(isinstance(c.server_default, sa.DefaultClause)) eq_(str(c.server_default.arg.text), "5") elif config.requirements.computed_reflects_normally.enabled: is_true(isinstance(c.computed, sa.Computed)) else: is_(c.computed, None)
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column( 'skill', sa.Column('__ts_vector__', lsgraph.models._shared.TSVECTOR(), sa.Computed("to_tsvector('english', name)", persisted=True), nullable=True)) op.create_index('ix_skill_name__ts_vector__', 'skill', ['__ts_vector__'], unique=False, postgresql_using='gin')
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column( 'lecture', sa.Column('__ts_vector__', models.TSVector(), sa.Computed(u"to_tsvector('english', text)", persisted=True), nullable=True)) op.create_index('ix_lecture___ts_vector__', 'lecture', ['__ts_vector__'], unique=False, postgresql_using='gin')
def upgrade(): op.add_column('content_items', sa.Column('search_tsv', postgresql.TSVECTOR(), sa.Computed(""" setweight(to_tsvector('german', coalesce(content_items.name, '') || ' ' || coalesce(content_items.title, '')), 'A') || setweight(to_tsvector('german', coalesce(content_items.body, '')), 'B') """), nullable=True)) op.add_column('laws', sa.Column('search_tsv', postgresql.TSVECTOR(), sa.Computed(""" setweight(to_tsvector('german', coalesce(laws.title_long, '') || ' ' || coalesce(laws.title_short, '') || ' ' || coalesce(laws.abbreviation, '')), 'A') || setweight(to_tsvector('german', coalesce(laws.notes_body, '')), 'B') """), nullable=True)) op.create_index('ix_content_items_search_tsv', 'content_items', ['search_tsv'], unique=False, postgresql_using='gin') op.create_index('ix_laws_search_tsv', 'laws', ['search_tsv'], unique=False, postgresql_using='gin')
def test_remove_computed_default_on_computed(self): """Asserts the current behavior which is that on PG and Oracle, the GENERATED ALWAYS AS is reflected as a server default which we can't tell is actually "computed", so these come out as a modification to the server default. """ m1 = MetaData() m2 = MetaData() Table( "user", m1, Column("id", Integer, primary_key=True), Column("bar", Integer), Column("foo", Integer, sa.Computed("bar + 42")), ) Table( "user", m2, Column("id", Integer, primary_key=True), Column("bar", Integer), Column("foo", Integer), ) diffs = self._fixture(m1, m2) eq_(diffs[0][0][0], "modify_default") eq_(diffs[0][0][2], "user") eq_(diffs[0][0][3], "foo") old = diffs[0][0][-2] new = diffs[0][0][-1] is_(new, None) is_true(isinstance(old, sa.DefaultClause)) if exclusions.against(config, "postgresql"): eq_(str(old.arg.text), "(bar + 42)") elif exclusions.against(config, "oracle"): eq_(str(old.arg.text), '"BAR"+42')
def test_add_computed_column(self): m1 = MetaData() m2 = MetaData() Table("user", m1, Column("id", Integer, primary_key=True)) Table( "user", m2, Column("id", Integer, primary_key=True), Column("foo", Integer, sa.Computed("5")), ) diffs = self._fixture(m1, m2) eq_(diffs[0][0], "add_column") eq_(diffs[0][2], "user") eq_(diffs[0][3].name, "foo") c = diffs[0][3].computed is_true(isinstance(c, sa.Computed)) is_(c.persisted, None) eq_(str(c.sqltext), "5")
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.create_table( 'account_type', sa.Column('account_type_id', sa.Integer(), nullable=False), sa.Column('account_type_name', sa.String(length=128), nullable=False), sa.Column('account_type_description', sa.String(length=256), nullable=False), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.PrimaryKeyConstraint('account_type_id')) op.create_table( 'action_type', sa.Column('action_type_id', sa.Integer(), nullable=False), sa.Column('action_type_name', sa.String(length=64), nullable=False), sa.Column('action_type_description', sa.String(length=512), nullable=False), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.PrimaryKeyConstraint('action_type_id')) op.create_table( 'contact_source_type', sa.Column('contact_source_type_id', sa.Integer(), nullable=False), sa.Column('contact_source_type_name', sa.String(length=128), nullable=False), sa.Column('contact_source_type_description', sa.String(length=256), nullable=False), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.PrimaryKeyConstraint('contact_source_type_id')) op.create_table( 'cookie_type', sa.Column('cookie_type_id', sa.Integer(), nullable=False), sa.Column('cookie_type_name', sa.String(length=128), nullable=False), sa.Column('cookie_type_description', sa.String(length=256), nullable=True), sa.Column('cookie_type_website_url', sa.String(length=512), nullable=True), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.PrimaryKeyConstraint('cookie_type_id')) op.create_table( 'email_server', sa.Column('email_server_id', sa.String(length=36), nullable=False), sa.Column('email_server_name', sa.String(length=64), nullable=False), sa.Column('smtp_address', sa.String(length=64), nullable=False), sa.Column('smtp_tls_port', sa.Integer(), nullable=False), sa.Column('smtp_ssl_port', sa.Integer(), nullable=False), sa.Column('imap_address', sa.String(length=64), nullable=False), sa.Column('imap_ssl_port', sa.Integer(), nullable=False), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.PrimaryKeyConstraint('email_server_id')) op.create_table( 'janium_campaign_step_type', sa.Column('janium_campaign_step_type_id', sa.Integer(), nullable=False), sa.Column('janium_campaign_step_type_name', sa.String(length=64), nullable=False), sa.Column('janium_campaign_step_type_description', sa.String(length=512), nullable=False), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.PrimaryKeyConstraint('janium_campaign_step_type_id')) op.create_table( 'time_zone', sa.Column('time_zone_id', sa.String(length=36), nullable=False), sa.Column('time_zone_name', sa.String(length=64), nullable=False), sa.Column('time_zone_code', sa.String(length=16), nullable=False), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.PrimaryKeyConstraint('time_zone_id')) op.create_table( 'user', sa.Column('user_id', sa.String(length=36), nullable=False), sa.Column('first_name', sa.String(length=126), nullable=False), sa.Column('last_name', sa.String(length=126), nullable=False), sa.Column('full_name', sa.String(length=256), sa.Computed("CONCAT(first_name, ' ', last_name)", ), nullable=True), sa.Column('title', sa.String(length=256), nullable=True), sa.Column('company', sa.String(length=256), nullable=True), sa.Column('location', sa.String(length=256), nullable=True), sa.Column('primary_email', sa.String(length=256), nullable=False), sa.Column('phone', sa.String(length=256), nullable=True), sa.Column('additional_contact_info', sa.JSON(), nullable=True), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('user_id')) op.create_table( 'cookie', sa.Column('cookie_id', sa.String(length=36), nullable=False), sa.Column('cookie_type_id', sa.Integer(), nullable=True), sa.Column('cookie_json_value', sa.JSON(), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('effective_start_date', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('effective_end_date', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['cookie_type_id'], ['cookie_type.cookie_type_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('cookie_id')) op.create_table( 'credentials', sa.Column('credentials_id', sa.String(length=36), nullable=False), sa.Column('username', sa.String(length=128), nullable=True), sa.Column('password', sa.String(length=128), nullable=True), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('credentials_id')) op.create_table( 'dte', sa.Column('dte_id', sa.String(length=36), nullable=False), sa.Column('dte_name', sa.String(length=128), nullable=False), sa.Column('dte_description', sa.String(length=256), nullable=True), sa.Column('dte_subject', sa.String(length=512), nullable=False), sa.Column('dte_body', sa.Text(), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('dte_id')) op.create_table( 'login_credential', sa.Column('login_credential_id', sa.String(length=36), nullable=False), sa.Column('user_id', sa.String(length=36), nullable=False), sa.Column('login_credential', sa.String(length=45), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.ForeignKeyConstraint( ['user_id'], ['user.user_id'], ), sa.PrimaryKeyConstraint('login_credential_id')) op.create_table( 'permission', sa.Column('permission_id', sa.String(length=36), nullable=False), sa.Column('permission_name', sa.String(length=64), nullable=False), sa.Column('permission_description', sa.String(length=512), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('permission_id')) op.create_table( 'email_config', sa.Column('email_config_id', sa.String(length=36), nullable=False), sa.Column('credentials_id', sa.String(length=36), nullable=True), sa.Column('email_server_id', sa.String(length=36), nullable=True), sa.Column('from_full_name', sa.String(length=64), nullable=False), sa.Column('reply_to_address', sa.String(length=64), nullable=False), sa.Column('is_sendgrid', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('sendgrid_sender_id', sa.String(length=36), nullable=True), sa.Column('is_email_forward', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['credentials_id'], ['credentials.credentials_id'], ), sa.ForeignKeyConstraint( ['email_server_id'], ['email_server.email_server_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('email_config_id')) op.create_table( 'permission_hierarchy', sa.Column('permission_hierarchy_id', sa.String(length=36), nullable=False), sa.Column('parent_permission_id', sa.String(length=36), nullable=False), sa.Column('child_permission_id', sa.String(length=36), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['child_permission_id'], ['permission.permission_id'], ), sa.ForeignKeyConstraint( ['parent_permission_id'], ['permission.permission_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('permission_hierarchy_id')) op.create_table( 'user_permission_map', sa.Column('user_id', sa.String(length=36), nullable=False), sa.Column('permission_id', sa.String(length=36), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['permission_id'], ['permission.permission_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.ForeignKeyConstraint( ['user_id'], ['user.user_id'], ), sa.PrimaryKeyConstraint('user_id', 'permission_id')) op.create_table( 'dte_sender', sa.Column('dte_sender_id', sa.String(length=36), nullable=False), sa.Column('user_id', sa.String(length=36), nullable=False), sa.Column('email_config_id', sa.String(length=36), nullable=False), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.ForeignKeyConstraint( ['email_config_id'], ['email_config.email_config_id'], ), sa.ForeignKeyConstraint( ['user_id'], ['user.user_id'], ), sa.PrimaryKeyConstraint('dte_sender_id')) op.create_table( 'account_group', sa.Column('account_group_id', sa.String(length=36), nullable=False), sa.Column('account_group_manager_id', sa.String(length=36), nullable=False), sa.Column('dte_id', sa.String(length=36), nullable=True), sa.Column('dte_sender_id', sa.String(length=36), nullable=False), sa.Column('account_group_name', sa.String(length=128), nullable=False), sa.Column('account_group_description', sa.String(length=256), nullable=True), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('effective_start_date', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('effective_end_date', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_group_manager_id'], ['user.user_id'], ), sa.ForeignKeyConstraint( ['dte_id'], ['dte.dte_id'], ), sa.ForeignKeyConstraint( ['dte_sender_id'], ['dte_sender.dte_sender_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('account_group_id')) op.create_table( 'account', sa.Column('account_id', sa.String(length=36), nullable=False), sa.Column('account_type_id', sa.Integer(), nullable=False), sa.Column('account_group_id', sa.String(length=36), nullable=False), sa.Column('email_config_id', sa.String(length=36), nullable=False), sa.Column('time_zone_id', sa.String(length=36), nullable=False), sa.Column('is_sending_emails', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('is_sending_li_messages', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('is_receiving_dte', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('effective_start_date', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('effective_end_date', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('data_enrichment_start_date', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('data_enrichment_end_date', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_group_id'], ['account_group.account_group_id'], ), sa.ForeignKeyConstraint( ['account_type_id'], ['account_type.account_type_id'], ), sa.ForeignKeyConstraint( ['email_config_id'], ['email_config.email_config_id'], ), sa.ForeignKeyConstraint( ['time_zone_id'], ['time_zone.time_zone_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('account_id')) op.create_table( 'user_account_group_map', sa.Column('user_id', sa.String(length=36), nullable=False), sa.Column('account_group_id', sa.String(length=36), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_group_id'], ['account_group.account_group_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.ForeignKeyConstraint( ['user_id'], ['user.user_id'], ), sa.PrimaryKeyConstraint('user_id', 'account_group_id')) op.create_table( 'contact_source', sa.Column('contact_source_id', sa.String(length=36), nullable=False), sa.Column('account_id', sa.String(length=36), nullable=False), sa.Column('contact_source_type_id', sa.Integer(), nullable=False), sa.Column('contact_source_json', sa.JSON(), nullable=False), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.ForeignKeyConstraint( ['account_id'], ['account.account_id'], ), sa.ForeignKeyConstraint( ['contact_source_type_id'], ['contact_source_type.contact_source_type_id'], ), sa.PrimaryKeyConstraint('contact_source_id')) op.create_table( 'janium_campaign', sa.Column('janium_campaign_id', sa.String(length=36), nullable=False), sa.Column('account_id', sa.String(length=36), nullable=False), sa.Column('email_config_id', sa.String(length=36), nullable=False), sa.Column('janium_campaign_name', sa.String(length=512), nullable=False), sa.Column('janium_campaign_description', sa.String(length=512), nullable=True), sa.Column('is_messenger', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('is_reply_in_email_thread', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('queue_start_time', sa.DateTime(), nullable=False), sa.Column('queue_end_time', sa.DateTime(), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('effective_start_date', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('effective_end_date', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_id'], ['account.account_id'], ), sa.ForeignKeyConstraint( ['email_config_id'], ['email_config.email_config_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('janium_campaign_id')) op.create_table( 'ulinc_config', sa.Column('ulinc_config_id', sa.String(length=36), nullable=False), sa.Column('credentials_id', sa.String(length=36), nullable=False), sa.Column('cookie_id', sa.String(length=36), nullable=False), sa.Column('account_id', sa.String(length=36), nullable=False), sa.Column('ulinc_client_id', sa.String(length=16), nullable=False), sa.Column('ulinc_li_email', sa.String(length=64), nullable=False), sa.Column('ulinc_is_active', sa.Boolean(), nullable=False), sa.Column('new_connection_webhook', sa.String(length=256), nullable=False), sa.Column('new_message_webhook', sa.String(length=256), nullable=False), sa.Column('send_message_webhook', sa.String(length=256), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_id'], ['account.account_id'], ), sa.ForeignKeyConstraint( ['cookie_id'], ['cookie.cookie_id'], ), sa.ForeignKeyConstraint( ['credentials_id'], ['credentials.credentials_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('ulinc_config_id')) op.create_table( 'user_account_map', sa.Column('user_id', sa.String(length=36), nullable=False), sa.Column('account_id', sa.String(length=36), nullable=False), sa.Column('permission_id', sa.String(length=36), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_id'], ['account.account_id'], ), sa.ForeignKeyConstraint( ['permission_id'], ['permission.permission_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.ForeignKeyConstraint( ['user_id'], ['user.user_id'], ), sa.PrimaryKeyConstraint('user_id', 'account_id', 'permission_id')) op.create_table( 'user_proxy_map', sa.Column('user_id', sa.String(length=36), nullable=False), sa.Column('account_id', sa.String(length=36), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_id'], ['account.account_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.ForeignKeyConstraint( ['user_id'], ['user.user_id'], ), sa.PrimaryKeyConstraint('user_id', 'account_id')) op.create_table( 'janium_campaign_step', sa.Column('janium_campaign_step_id', sa.String(length=36), nullable=False), sa.Column('janium_campaign_id', sa.String(length=36), nullable=False), sa.Column('janium_campaign_step_type_id', sa.Integer(), nullable=False), sa.Column('janium_campaign_step_delay', sa.Integer(), nullable=False), sa.Column('janium_campaign_step_body', sa.Text(), nullable=True), sa.Column('janium_campaign_step_subject', sa.String(length=1000), nullable=True), sa.Column('queue_start_time', sa.DateTime(), nullable=False), sa.Column('queue_end_time', sa.DateTime(), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('effective_start_date', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('effective_end_date', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['janium_campaign_id'], ['janium_campaign.janium_campaign_id'], ), sa.ForeignKeyConstraint( ['janium_campaign_step_type_id'], ['janium_campaign_step_type.janium_campaign_step_type_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('janium_campaign_step_id')) op.create_table( 'ulinc_campaign', sa.Column('ulinc_campaign_id', sa.String(length=36), nullable=False), sa.Column('account_id', sa.String(length=36), nullable=False), sa.Column('ulinc_config_id', sa.String(length=36), nullable=False), sa.Column('janium_campaign_id', sa.String(length=36), nullable=True), sa.Column('ulinc_campaign_name', sa.String(length=512), nullable=False), sa.Column('ulinc_is_active', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('ulinc_ulinc_campaign_id', sa.String(length=16), nullable=False), sa.Column('ulinc_is_messenger', sa.Boolean(), server_default=sa.text('false'), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_id'], ['account.account_id'], ), sa.ForeignKeyConstraint( ['janium_campaign_id'], ['janium_campaign.janium_campaign_id'], ), sa.ForeignKeyConstraint( ['ulinc_config_id'], ['ulinc_config.ulinc_config_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('ulinc_campaign_id')) op.create_table( 'contact', sa.Column('contact_id', sa.String(length=36), nullable=False), sa.Column('account_id', sa.String(length=36), nullable=False), sa.Column('janium_campaign_id', sa.String(length=36), nullable=False), sa.Column('ulinc_campaign_id', sa.String(length=36), nullable=False), sa.Column('contact_source_id', sa.String(length=36), nullable=False), sa.Column('ulinc_id', sa.String(length=16), nullable=False), sa.Column('ulinc_ulinc_campaign_id', sa.String(length=16), nullable=False), sa.Column('tib_id', sa.String(length=36), nullable=True), sa.Column('contact_info', sa.JSON(), nullable=False), sa.Column('asOfStartTime', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.Column('asOfEndTime', sa.DateTime(), server_default=sa.text( '(DATE_ADD(UTC_TIMESTAMP, INTERVAL 5000 YEAR))'), nullable=True), sa.Column('updated_by', sa.String(length=36), nullable=False), sa.ForeignKeyConstraint( ['account_id'], ['account.account_id'], ), sa.ForeignKeyConstraint( ['contact_source_id'], ['contact_source.contact_source_id'], ), sa.ForeignKeyConstraint( ['janium_campaign_id'], ['janium_campaign.janium_campaign_id'], ), sa.ForeignKeyConstraint( ['ulinc_campaign_id'], ['ulinc_campaign.ulinc_campaign_id'], ), sa.ForeignKeyConstraint( ['updated_by'], ['user.user_id'], ), sa.PrimaryKeyConstraint('contact_id')) op.create_table( 'action', sa.Column('action_id', sa.String(length=36), nullable=False), sa.Column('contact_id', sa.String(length=36), nullable=False), sa.Column('action_type_id', sa.Integer(), nullable=False), sa.Column('action_timestamp', sa.DateTime(), nullable=True), sa.Column('action_message', sa.Text(), nullable=True), sa.Column('to_email_addr', sa.String(length=64), nullable=True), sa.Column('date_added', sa.DateTime(), server_default=sa.text('(UTC_TIMESTAMP)'), nullable=True), sa.ForeignKeyConstraint( ['action_type_id'], ['action_type.action_type_id'], ), sa.ForeignKeyConstraint( ['contact_id'], ['contact.contact_id'], ), sa.PrimaryKeyConstraint('action_id'))
sqlalchemy.Column("id", postgresql.UUID(as_uuid=True), nullable=False), sqlalchemy.Column( "created_at", sqlalchemy.TIMESTAMP(timezone=True), nullable=False, server_default=sqlalchemy.sql.func.now() ), sqlalchemy.Column("flags", sqlalchemy.BIGINT, nullable=False), sqlalchemy.Column("username", sqlalchemy.VARCHAR(validation.MAXIMUM_NAME_LENGTH), nullable=False), # Constraints sqlalchemy.PrimaryKeyConstraint("id", name="user_pk"), sqlalchemy.UniqueConstraint("username", name="user_username_uc"), ) Devices = sqlalchemy.Table( "devices", metadata, sqlalchemy.Column("id", sqlalchemy.BIGINT, sqlalchemy.Computed(ALWAYS), nullable=False), sqlalchemy.Column("is_required_viewer", sqlalchemy.BOOLEAN, nullable=False), sqlalchemy.Column("name", sqlalchemy.VARCHAR(validation.MAXIMUM_NAME_LENGTH), nullable=False), sqlalchemy.Column("user_id", postgresql.UUID(as_uuid=True), nullable=False), # Constraints sqlalchemy.PrimaryKeyConstraint("id", name="device_pk"), sqlalchemy.ForeignKeyConstraint(["user_id"], ["users.id"], ondelete=CASCADE, name="device_user_id_fk"), sqlalchemy.UniqueConstraint("name", "user_id", name="device_uc"), ) Messages = sqlalchemy.Table( "messages", metadata, sqlalchemy.Column("id", postgresql.UUID(as_uuid=True), nullable=False), sqlalchemy.Column( "created_at", sqlalchemy.TIMESTAMP(timezone=True), nullable=False, server_default=sqlalchemy.sql.func.now()
class AutogenerateComputedTest(AutogenFixtureTest, TestBase): __requires__ = ("computed_columns", ) __backend__ = True def test_add_computed_column(self): m1 = MetaData() m2 = MetaData() Table("user", m1, Column("id", Integer, primary_key=True)) Table( "user", m2, Column("id", Integer, primary_key=True), Column("foo", Integer, sa.Computed("5")), ) diffs = self._fixture(m1, m2) eq_(diffs[0][0], "add_column") eq_(diffs[0][2], "user") eq_(diffs[0][3].name, "foo") c = diffs[0][3].computed is_true(isinstance(c, sa.Computed)) is_(c.persisted, None) eq_(str(c.sqltext), "5") def test_remove_computed_column(self): m1 = MetaData() m2 = MetaData() Table( "user", m1, Column("id", Integer, primary_key=True), Column("foo", Integer, sa.Computed("5")), ) Table("user", m2, Column("id", Integer, primary_key=True)) diffs = self._fixture(m1, m2) eq_(diffs[0][0], "remove_column") eq_(diffs[0][2], "user") c = diffs[0][3] eq_(c.name, "foo") if config.requirements.computed_reflects_normally.enabled: is_true(isinstance(c.computed, sa.Computed)) else: is_(c.computed, None) if config.requirements.computed_reflects_as_server_default.enabled: is_true(isinstance(c.server_default, sa.DefaultClause)) eq_(str(c.server_default.arg.text), "5") elif config.requirements.computed_reflects_normally.enabled: is_true(isinstance(c.computed, sa.Computed)) else: is_(c.computed, None) @testing.combinations( lambda: (None, sa.Computed("bar*5")), (lambda: (sa.Computed("bar*5"), None)), lambda: ( sa.Computed("bar*5"), sa.Computed("bar * 42", persisted=True), ), lambda: (sa.Computed("bar*5"), sa.Computed("bar * 42")), ) @config.requirements.computed_reflects_normally def test_cant_change_computed_warning(self, test_case): arg_before, arg_after = testing.resolve_lambda(test_case, **locals()) m1 = MetaData() m2 = MetaData() arg_before = [] if arg_before is None else [arg_before] arg_after = [] if arg_after is None else [arg_after] Table( "user", m1, Column("id", Integer, primary_key=True), Column("bar", Integer), Column("foo", Integer, *arg_before), ) Table( "user", m2, Column("id", Integer, primary_key=True), Column("bar", Integer), Column("foo", Integer, *arg_after), ) with mock.patch("alembic.util.warn") as mock_warn: diffs = self._fixture(m1, m2) eq_( mock_warn.mock_calls, [mock.call("Computed default on user.foo cannot be modified")], ) eq_(list(diffs), []) @testing.combinations( lambda: (None, None), lambda: (sa.Computed("5"), sa.Computed("5")), lambda: (sa.Computed("bar*5"), sa.Computed("bar*5")), ( lambda: (sa.Computed("bar*5"), None), config.requirements.computed_doesnt_reflect_as_server_default, ), ) def test_computed_unchanged(self, test_case): arg_before, arg_after = testing.resolve_lambda(test_case, **locals()) m1 = MetaData() m2 = MetaData() arg_before = [] if arg_before is None else [arg_before] arg_after = [] if arg_after is None else [arg_after] Table( "user", m1, Column("id", Integer, primary_key=True), Column("bar", Integer), Column("foo", Integer, *arg_before), ) Table( "user", m2, Column("id", Integer, primary_key=True), Column("bar", Integer), Column("foo", Integer, *arg_after), ) with mock.patch("alembic.util.warn") as mock_warn: diffs = self._fixture(m1, m2) eq_(mock_warn.mock_calls, []) eq_(list(diffs), []) @config.requirements.computed_reflects_as_server_default def test_remove_computed_default_on_computed(self): """Asserts the current behavior which is that on PG and Oracle, the GENERATED ALWAYS AS is reflected as a server default which we can't tell is actually "computed", so these come out as a modification to the server default. """ m1 = MetaData() m2 = MetaData() Table( "user", m1, Column("id", Integer, primary_key=True), Column("bar", Integer), Column("foo", Integer, sa.Computed("bar + 42")), ) Table( "user", m2, Column("id", Integer, primary_key=True), Column("bar", Integer), Column("foo", Integer), ) diffs = self._fixture(m1, m2) eq_(diffs[0][0][0], "modify_default") eq_(diffs[0][0][2], "user") eq_(diffs[0][0][3], "foo") old = diffs[0][0][-2] new = diffs[0][0][-1] is_(new, None) is_true(isinstance(old, sa.DefaultClause)) if exclusions.against(config, "postgresql"): eq_(str(old.arg.text), "(bar + 42)") elif exclusions.against(config, "oracle"): eq_(str(old.arg.text), '"BAR"+42')
def upgrade(active_plugins=None, options=None): op.create_table('vnf_lcm_subscriptions', sa.Column('id', types.Uuid(length=36), nullable=False), sa.Column('callback_uri', sa.String(length=255), nullable=False), sa.Column('subscription_authentication', sa.JSON(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('updated_at', sa.DateTime(), nullable=True), sa.Column('deleted_at', sa.DateTime(), nullable=True), sa.Column('deleted', Boolean, default=False), sa.PrimaryKeyConstraint('id'), mysql_engine='InnoDB') noti_str = "json_unquote(json_extract('filter','$.notificationTypes'))" sta_str = "json_unquote(json_extract('filter','$.operationStates'))" op.create_table( 'vnf_lcm_filters', sa.Column('id', sa.Integer, autoincrement=True, nullable=False), sa.Column('subscription_uuid', sa.String(length=36), nullable=False), sa.Column('filter', sa.JSON(), nullable=False), sa.Column('notification_types', sa.LargeBinary(length=65536), sa.Computed(noti_str)), sa.Column('notification_types_len', sa.Integer, sa.Computed("ifnull(json_length('notification_types'),0)")), sa.Column('operation_states', sa.LargeBinary(length=65536), sa.Computed(sta_str)), sa.Column('operation_states_len', sa.Integer, sa.Computed("ifnull(json_length('operation_states'),0)")), sa.PrimaryKeyConstraint('id'), sa.ForeignKeyConstraint( ['subscription_uuid'], ['vnf_lcm_subscriptions.id'], ), mysql_engine='InnoDB') op.create_table('vnf_lcm_op_occs', sa.Column('id', types.Uuid(length=36), nullable=False), sa.Column('operation_state', sa.String(length=255), nullable=False), sa.Column('state_entered_time', sa.DateTime(), nullable=False), sa.Column('start_time', sa.DateTime(), nullable=False), sa.Column('vnf_instance_id', types.Uuid(length=36), nullable=False), sa.Column('operation', sa.String(length=255), nullable=False), sa.Column('is_automatic_invocation', sa.Boolean, nullable=False), sa.Column('operation_params', sa.JSON(), nullable=True), sa.Column('error', sa.JSON(), nullable=True), sa.Column('deleted', Boolean, default=False), sa.PrimaryKeyConstraint('id'), sa.ForeignKeyConstraint( ['vnf_instance_id'], ['vnf_instances.id'], ), mysql_engine='InnoDB')
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column('departments', sa.Column('employeesCount', sa.Integer(), sa.Computed("`attributes` ->> '$.employeesCount'", ), nullable=True)) op.create_index(op.f('ix_departments_employeesCount'), 'departments', ['employeesCount'], unique=False)
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.create_table('criticality', sa.Column('id', sa.Integer(), nullable=False), sa.Column('value', sa.String(length=100), nullable=False), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('value') ) op.create_table('role', sa.Column('id', sa.Integer(), nullable=False), sa.Column('value', sa.String(length=100), nullable=False), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('value') ) op.create_table('status', sa.Column('id', sa.Integer(), nullable=False), sa.Column('value', sa.String(length=100), nullable=False), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('value') ) op.create_table('user', sa.Column('id', sa.Integer(), nullable=False), sa.Column('first_name', sa.String(length=30), nullable=False), sa.Column('last_name', sa.String(length=30), nullable=False), sa.Column('email', sa.String(length=200), nullable=False), sa.Column('password', sa.Text(), nullable=False), sa.Column('is_verified', sa.Boolean(), server_default=sa.text('0'), nullable=True), sa.Column('created_at', sa.DateTime(), server_default=sa.text('now()'), nullable=True), sa.Column('role_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['role_id'], ['role.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('email') ) op.create_table('organisation', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=70), nullable=False), sa.Column('passcode', sa.Text(), nullable=False), sa.Column('location', sa.String(length=30), nullable=False), sa.Column('registered_at', sa.DateTime(), server_default=sa.text('now()'), nullable=False), sa.Column('registered_by', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['registered_by'], ['user.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) op.create_table('project', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.Column('description', sa.String(length=255), server_default='', nullable=False), sa.Column('status_id', sa.Integer(), nullable=True), sa.Column('created_at', sa.DateTime(), server_default=sa.text('now()'), nullable=False), sa.Column('organisation_id', sa.Integer(), nullable=True), sa.Column('created_by', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['created_by'], ['user.id'], ), sa.ForeignKeyConstraint(['organisation_id'], ['organisation.id'], ), sa.ForeignKeyConstraint(['status_id'], ['status.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) op.create_table('user_organisation', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('organisation_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['organisation_id'], ['organisation.id'], ), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('project_history', sa.Column('remarks', sa.Text(), server_default=sa.text('NULL'), nullable=True), sa.Column('created_at', sa.DateTime(), server_default=sa.text('now()'), nullable=False), sa.Column('id', sa.Integer(), nullable=False), sa.Column('project_id', sa.Integer(), nullable=False), sa.Column('created_by', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['created_by'], ['user.id'], ), sa.ForeignKeyConstraint(['project_id'], ['project.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('task', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=200), nullable=False), sa.Column('description', sa.Text(), nullable=False), sa.Column('created_at', sa.DateTime(), server_default=sa.text('now()'), nullable=False), sa.Column('created_by', sa.Integer(), nullable=True), sa.Column('assigned_by', sa.Integer(), nullable=True), sa.Column('assigned_to', sa.Integer(), nullable=True), sa.Column('reviewed_by', sa.Integer(), nullable=True), sa.Column('status_id', sa.Integer(), nullable=True), sa.Column('criticality_id', sa.Integer(), nullable=True), sa.Column('expected_completion_date', sa.DateTime(), sa.Computed('created_at + INTERVAL 3 DAY', persisted=True), nullable=False), sa.Column('project_id', sa.Integer(), nullable=True), sa.Column('actual_completion_date', sa.DateTime(), server_default=sa.text('NULL'), nullable=True), sa.ForeignKeyConstraint(['assigned_by'], ['user.id'], ), sa.ForeignKeyConstraint(['assigned_to'], ['user.id'], ), sa.ForeignKeyConstraint(['created_by'], ['user.id'], ), sa.ForeignKeyConstraint(['criticality_id'], ['criticality.id'], ), sa.ForeignKeyConstraint(['project_id'], ['project.id'], ), sa.ForeignKeyConstraint(['reviewed_by'], ['user.id'], ), sa.ForeignKeyConstraint(['status_id'], ['status.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) op.create_table('user_project', sa.Column('id', sa.Integer(), nullable=False), sa.Column('user_id', sa.Integer(), nullable=False), sa.Column('project_id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['project_id'], ['project.id'], ), sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('task_history', sa.Column('remarks', sa.Text(), server_default=sa.text('NULL'), nullable=True), sa.Column('created_at', sa.DateTime(), server_default=sa.text('now()'), nullable=False), sa.Column('id', sa.Integer(), nullable=False), sa.Column('task_id', sa.Integer(), nullable=False), sa.Column('created_by', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['created_by'], ['user.id'], ), sa.ForeignKeyConstraint(['task_id'], ['task.id'], ), sa.PrimaryKeyConstraint('id') )