|
@@ -0,0 +1,74 @@
|
|
|
+"""Add project table
|
|
|
+
|
|
|
+Revision ID: 6a39f3d8e55c
|
|
|
+Revises: c0fbf31ca0db
|
|
|
+Create Date: 2024-10-01 14:02:35.241684
|
|
|
+
|
|
|
+"""
|
|
|
+
|
|
|
+from alembic import op
|
|
|
+import sqlalchemy as sa
|
|
|
+from sqlalchemy.sql import table, column, select
|
|
|
+
|
|
|
+revision = "6a39f3d8e55c"
|
|
|
+down_revision = "c0fbf31ca0db"
|
|
|
+branch_labels = None
|
|
|
+depends_on = None
|
|
|
+
|
|
|
+
|
|
|
+def upgrade():
|
|
|
+ # Creating the 'project' table
|
|
|
+ print("Creating project table")
|
|
|
+ project_table = op.create_table(
|
|
|
+ "project",
|
|
|
+ sa.Column("id", sa.Text(), primary_key=True),
|
|
|
+ sa.Column("user_id", sa.Text(), nullable=False),
|
|
|
+ sa.Column("name", sa.Text(), nullable=False),
|
|
|
+ sa.Column("description", sa.Text(), nullable=True),
|
|
|
+ sa.Column("data", sa.JSON(), nullable=True),
|
|
|
+ sa.Column("meta", sa.JSON(), nullable=True),
|
|
|
+ sa.Column("created_at", sa.BigInteger(), nullable=False),
|
|
|
+ sa.Column("updated_at", sa.BigInteger(), nullable=True),
|
|
|
+ )
|
|
|
+
|
|
|
+ print("Migrating data from document table to project table")
|
|
|
+ # Representation of the existing 'document' table
|
|
|
+ document_table = table(
|
|
|
+ "document",
|
|
|
+ column("collection_name", sa.String()),
|
|
|
+ column("user_id", sa.String()),
|
|
|
+ column("name", sa.String()),
|
|
|
+ column("title", sa.Text()),
|
|
|
+ column("timestamp", sa.BigInteger()),
|
|
|
+ )
|
|
|
+
|
|
|
+ # Select all from existing document table
|
|
|
+ documents = op.get_bind().execute(
|
|
|
+ select(
|
|
|
+ document_table.c.collection_name,
|
|
|
+ document_table.c.user_id,
|
|
|
+ document_table.c.name,
|
|
|
+ document_table.c.title,
|
|
|
+ document_table.c.timestamp,
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
+ # Insert data into project table from document table
|
|
|
+ for doc in documents:
|
|
|
+ op.get_bind().execute(
|
|
|
+ project_table.insert().values(
|
|
|
+ id=doc.collection_name,
|
|
|
+ user_id=doc.user_id,
|
|
|
+ description=doc.name,
|
|
|
+ meta={
|
|
|
+ "legacy": True,
|
|
|
+ },
|
|
|
+ name=doc.title,
|
|
|
+ created_at=doc.timestamp,
|
|
|
+ updated_at=doc.timestamp, # using created_at for both created_at and updated_at in project
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+def downgrade():
|
|
|
+ op.drop_table("project")
|