JhHardwareWRS_BackPoint/scripts/migrate_work_schedule_attendance_location.py
2026-06-24 15:19:14 +08:00

47 lines
1.4 KiB
Python

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 column_exists(conn, column_name: str) -> bool:
return bool(conn.execute(
text("""
SELECT COUNT(*)
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'work_schedules'
AND column_name = :column_name
"""),
{"column_name": column_name},
).scalar_one())
def main() -> None:
with engine.begin() as conn:
if not column_exists(conn, "attendance_latitude"):
conn.execute(text("""
ALTER TABLE work_schedules
ADD COLUMN attendance_latitude DECIMAL(10, 7) NULL AFTER night_end
"""))
if not column_exists(conn, "attendance_longitude"):
conn.execute(text("""
ALTER TABLE work_schedules
ADD COLUMN attendance_longitude DECIMAL(10, 7) NULL AFTER attendance_latitude
"""))
if not column_exists(conn, "attendance_radius_meters"):
conn.execute(text("""
ALTER TABLE work_schedules
ADD COLUMN attendance_radius_meters INT NOT NULL DEFAULT 500 AFTER attendance_longitude
"""))
print("work_schedules attendance location migrated")
if __name__ == "__main__":
main()