| """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(): |
| |
| 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") |
| |
| 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()), |
| ) |
|
|
| |
| 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, |
| ) |
| ) |
|
|
| |
| 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, |
| ) |
| ) |
|
|
|
|
| def downgrade(): |
| op.drop_table("knowledge") |
|
|