61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add the parent directory to Python path so we can import from root
|
|
sys.path.append(str(Path(__file__).parent.parent))
|
|
|
|
from flask import Flask
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from extensions import db
|
|
from sqlalchemy import text
|
|
|
|
def upgrade():
|
|
# Create events table
|
|
with db.engine.connect() as conn:
|
|
conn.execute(text('''
|
|
CREATE TABLE IF NOT EXISTS events (
|
|
id SERIAL PRIMARY KEY,
|
|
event_type VARCHAR(50) NOT NULL,
|
|
user_id INTEGER NOT NULL REFERENCES "user" (id),
|
|
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
details JSONB,
|
|
ip_address VARCHAR(45),
|
|
user_agent VARCHAR(255)
|
|
);
|
|
|
|
-- Create index on event_type for faster filtering
|
|
CREATE INDEX IF NOT EXISTS idx_events_event_type ON events(event_type);
|
|
|
|
-- Create index on timestamp for faster date-based queries
|
|
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
|
|
-- Create index on user_id for faster user-based queries
|
|
CREATE INDEX IF NOT EXISTS idx_events_user_id ON events(user_id);
|
|
'''))
|
|
conn.commit()
|
|
|
|
def downgrade():
|
|
# Drop events table and its indexes
|
|
with db.engine.connect() as conn:
|
|
conn.execute(text('''
|
|
DROP INDEX IF EXISTS idx_events_event_type;
|
|
DROP INDEX IF EXISTS idx_events_timestamp;
|
|
DROP INDEX IF EXISTS idx_events_user_id;
|
|
DROP TABLE IF EXISTS events;
|
|
'''))
|
|
conn.commit()
|
|
|
|
if __name__ == '__main__':
|
|
app = Flask(__name__)
|
|
|
|
# Use the same database configuration as in app.py
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL', 'postgresql://postgres:1253@localhost:5432/docupulse')
|
|
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
|
|
|
print("Connecting to database...")
|
|
|
|
db.init_app(app)
|
|
|
|
with app.app_context():
|
|
upgrade() |