| """ |
| Add share_token and share_enabled fields to projects table |
| """ |
|
|
| import sys |
| import os |
| sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../..')) |
|
|
| from sqlalchemy import text |
| from landppt.database.database import engine |
|
|
|
|
| def upgrade(): |
| """Add share_token and share_enabled columns to projects table""" |
| with engine.connect() as conn: |
| |
| try: |
| |
| conn.execute(text(""" |
| ALTER TABLE projects |
| ADD COLUMN share_token VARCHAR(64) |
| """)) |
| print("Added share_token column") |
| except Exception as e: |
| print(f"share_token column may already exist: {e}") |
|
|
| try: |
| |
| conn.execute(text(""" |
| ALTER TABLE projects |
| ADD COLUMN share_enabled BOOLEAN NOT NULL DEFAULT 0 |
| """)) |
| print("Added share_enabled column") |
| except Exception as e: |
| print(f"share_enabled column may already exist: {e}") |
|
|
| try: |
| |
| conn.execute(text(""" |
| CREATE UNIQUE INDEX IF NOT EXISTS idx_projects_share_token |
| ON projects (share_token) |
| WHERE share_token IS NOT NULL |
| """)) |
| print("Created unique index on share_token") |
| except Exception as e: |
| print(f"Index creation error: {e}") |
|
|
| conn.commit() |
| print("Migration completed successfully!") |
|
|
|
|
| def downgrade(): |
| """Remove share_token and share_enabled columns from projects table""" |
| with engine.connect() as conn: |
| try: |
| |
| conn.execute(text("DROP INDEX IF EXISTS idx_projects_share_token")) |
|
|
| |
| |
| |
| print("Note: SQLite doesn't support DROP COLUMN. Columns will remain but can be ignored.") |
| except Exception as e: |
| print(f"Error during downgrade: {e}") |
|
|
| conn.commit() |
|
|
|
|
| if __name__ == "__main__": |
| upgrade() |
| print("Project share fields migration completed!") |
|
|