from pathlib import Path import sys from sqlalchemy import text ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT)) from app.database import engine # noqa: E402 def main() -> None: with engine.begin() as conn: conn.execute( text( """ CREATE TABLE IF NOT EXISTS device_qrcode_batch_tasks ( id BIGINT NOT NULL AUTO_INCREMENT, file_name VARCHAR(255) NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'pending', item_count INT NOT NULL DEFAULT 0, completed_count INT NOT NULL DEFAULT 0, failed_count INT NOT NULL DEFAULT 0, items_json JSON NOT NULL, zip_url VARCHAR(500) NULL, error_message VARCHAR(1000) NULL, created_by VARCHAR(20) NOT NULL, started_at DATETIME NULL, finished_at DATETIME NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_device_qrcode_batch_tasks_creator (created_by, created_at), KEY idx_device_qrcode_batch_tasks_status (status, created_at), CONSTRAINT fk_device_qrcode_batch_tasks_creator FOREIGN KEY (created_by) REFERENCES personnel (phone) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci """ ) ) print("qrcode batch tasks migrated") if __name__ == "__main__": main()