diff sat/memory/migration/versions/4b002773cf92_add_origin_id_column_to_history_and_.py @ 3796:24c1c06c865b

core (memory/mapping): add `origin_id` column to History + constraints update: - `origin_id` is added as a column instead of being just in extra, as it an important data to filter on. - Add some constraints. - Add `serialise` method to Message and Subject.
author Goffi <goffi@goffi.org>
date Fri, 17 Jun 2022 14:15:23 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sat/memory/migration/versions/4b002773cf92_add_origin_id_column_to_history_and_.py	Fri Jun 17 14:15:23 2022 +0200
@@ -0,0 +1,60 @@
+"""add origin_id column to history and adapt constraints
+
+Revision ID: 4b002773cf92
+Revises: 79e5f3313fa4
+Create Date: 2022-06-13 16:10:39.711634
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '4b002773cf92'
+down_revision = '79e5f3313fa4'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    with op.batch_alter_table('history', schema=None) as batch_op:
+        batch_op.add_column(sa.Column('origin_id', sa.Text(), nullable=True))
+        batch_op.create_unique_constraint('uq_origin_id', ['profile_id', 'origin_id', 'source'])
+
+    with op.batch_alter_table('message', schema=None) as batch_op:
+        batch_op.alter_column('history_uid',
+               existing_type=sa.TEXT(),
+               nullable=False)
+        batch_op.alter_column('message',
+               existing_type=sa.TEXT(),
+               nullable=False)
+
+    with op.batch_alter_table('subject', schema=None) as batch_op:
+        batch_op.alter_column('history_uid',
+               existing_type=sa.TEXT(),
+               nullable=False)
+        batch_op.alter_column('subject',
+               existing_type=sa.TEXT(),
+               nullable=False)
+
+
+def downgrade():
+    with op.batch_alter_table('subject', schema=None) as batch_op:
+        batch_op.alter_column('subject',
+               existing_type=sa.TEXT(),
+               nullable=True)
+        batch_op.alter_column('history_uid',
+               existing_type=sa.TEXT(),
+               nullable=True)
+
+    with op.batch_alter_table('message', schema=None) as batch_op:
+        batch_op.alter_column('message',
+               existing_type=sa.TEXT(),
+               nullable=True)
+        batch_op.alter_column('history_uid',
+               existing_type=sa.TEXT(),
+               nullable=True)
+
+    with op.batch_alter_table('history', schema=None) as batch_op:
+        batch_op.drop_constraint('uq_origin_id', type_='unique')
+        batch_op.drop_column('origin_id')