55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Migration: create audit_logs and app_logs tables.
|
|
|
|
Run once: python scripts/add_log_tables.py
|
|
Safe to re-run — uses CREATE TABLE IF NOT EXISTS.
|
|
"""
|
|
import sys, os
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from app import create_app
|
|
from app.extensions import db
|
|
|
|
app = create_app()
|
|
|
|
TABLES = [
|
|
(
|
|
'audit_logs',
|
|
"""
|
|
CREATE TABLE IF NOT EXISTS audit_logs (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
action VARCHAR(64) NOT NULL,
|
|
description VARCHAR(255),
|
|
ip_address VARCHAR(45),
|
|
INDEX ix_audit_logs_timestamp (timestamp),
|
|
INDEX ix_audit_logs_action (action)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
|
"""
|
|
),
|
|
(
|
|
'app_logs',
|
|
"""
|
|
CREATE TABLE IF NOT EXISTS app_logs (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
level VARCHAR(16) NOT NULL,
|
|
module VARCHAR(128),
|
|
message TEXT,
|
|
INDEX ix_app_logs_timestamp (timestamp),
|
|
INDEX ix_app_logs_level (level)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
|
"""
|
|
),
|
|
]
|
|
|
|
with app.app_context():
|
|
with db.engine.connect() as conn:
|
|
for name, sql in TABLES:
|
|
conn.execute(db.text(sql))
|
|
conn.commit()
|
|
print(f' {name} — created (or already exists).')
|
|
|
|
print('Done.')
|