Spaces:
Paused
Paused
| """Add knowledge 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 | |
| import json | |
| revision = "6a39f3d8e55c" | |
| down_revision = "c0fbf31ca0db" | |
| branch_labels = None | |
| depends_on = None | |
| def upgrade(): | |
| # Creating the 'knowledge' table | |
| print("Creating knowledge table") | |
| knowledge_table = op.create_table( | |
| "knowledge", | |
| 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 knowledge 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("content", 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.content, | |
| document_table.c.timestamp, | |
| ) | |
| ) | |
| # Insert data into knowledge table from document table | |
| for doc in documents: | |
| op.get_bind().execute( | |
| knowledge_table.insert().values( | |
| id=doc.collection_name, | |
| user_id=doc.user_id, | |
| description=doc.name, | |
| meta={ | |
| "legacy": True, | |
| "document": True, | |
| "tags": json.loads(doc.content or "{}").get("tags", []), | |
| }, | |
| 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("knowledge") | |