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

76 lines
2.6 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
from app.services.work_schedule import DEFAULT_WORK_SCHEDULE # noqa: E402
def main() -> None:
with engine.begin() as conn:
conn.execute(text("""
CREATE TABLE IF NOT EXISTS work_schedules (
id INT NOT NULL PRIMARY KEY,
day_start VARCHAR(5) NOT NULL,
day_end VARCHAR(5) NOT NULL,
lunch_start VARCHAR(5) NOT NULL,
lunch_end VARCHAR(5) NOT NULL,
dinner_start VARCHAR(5) NOT NULL,
dinner_end VARCHAR(5) NOT NULL,
overtime_start VARCHAR(5) NOT NULL,
overtime_end VARCHAR(5) NOT NULL,
night_start VARCHAR(5) NOT NULL,
night_end VARCHAR(5) NOT NULL,
attendance_latitude DECIMAL(10, 7) NULL,
attendance_longitude DECIMAL(10, 7) NULL,
attendance_radius_meters INT NOT NULL DEFAULT 500,
auto_submit_hours DECIMAL(10, 2) NOT NULL DEFAULT 15,
updated_by VARCHAR(20) NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
"""))
exists = conn.execute(
text("SELECT COUNT(*) FROM work_schedules WHERE id = 1")
).scalar_one()
if not exists:
conn.execute(
text("""
INSERT INTO work_schedules (
id,
day_start,
day_end,
lunch_start,
lunch_end,
dinner_start,
dinner_end,
overtime_start,
overtime_end,
night_start,
night_end
) VALUES (
1,
:day_start,
:day_end,
:lunch_start,
:lunch_end,
:dinner_start,
:dinner_end,
:overtime_start,
:overtime_end,
:night_start,
:night_end
)
"""),
DEFAULT_WORK_SCHEDULE,
)
print("work_schedules migrated")
if __name__ == "__main__":
main()