47 lines
1.4 KiB
Python
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()
|