76 lines
2.6 KiB
Python
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()
|