Files
dano2025/migrations/0002_cap_orders_to_one.py
2025-12-15 18:38:10 +03:00

38 lines
1.0 KiB
Python

from __future__ import annotations
import sqlite3
from pathlib import Path
MIGRATION_ID = "0002_cap_orders_to_one"
DESCRIPTION = "Cap daily orders per category at 1 for each client/day (values >1 -> 1)"
ORDER_COLS = [
"orders_amt_ent",
"orders_amt_super",
"orders_amt_transport",
"orders_amt_shopping",
"orders_amt_hotel",
"orders_amt_avia",
]
def run(context) -> None:
dataset_dir = Path(getattr(context, "dataset_dir", Path.cwd()))
sqlite_path = getattr(context, "sqlite_path", dataset_dir / "ds.sqlite")
if not sqlite_path.exists():
raise FileNotFoundError(f"SQLite database not found: {sqlite_path}")
conn = sqlite3.connect(sqlite_path)
try:
for col in ORDER_COLS:
sql = f"""
UPDATE communications
SET {col} = CASE WHEN {col} > 1 THEN 1 ELSE {col} END
"""
conn.execute(sql)
conn.commit()
print(f"Capped values >1 to 1 in columns: {', '.join(ORDER_COLS)}")
finally:
conn.close()