"""SQLite 连接与请假考勤业务表幂等初始化。""" from __future__ import annotations import sqlite3 from db.display_metadata import init_display_metadata from db.leave_display_metadata import seed_leave_display_metadata from db.schema import BUSINESS_TABLES, TABLE_DDL from db.timestamp_columns import init_updated_at_trigger from util.runtime_paths import get_db_path def get_conn() -> sqlite3.Connection: return sqlite3.connect(get_db_path()) def init_db() -> None: conn = get_conn() try: cur = conn.cursor() for table_name, ddl in TABLE_DDL: cur.execute(ddl) init_updated_at_trigger(cur, table_name) cur.execute( """ CREATE INDEX IF NOT EXISTS idx_leave_requests_employee ON leave_requests(employee_id, status) """ ) cur.execute( """ CREATE INDEX IF NOT EXISTS idx_leave_balances_employee ON leave_balances(employee_id, balance_type) """ ) cur.execute( """ CREATE INDEX IF NOT EXISTS idx_leave_policies_type ON leave_policies(leave_type) """ ) cur.execute( """ CREATE INDEX IF NOT EXISTS idx_attendance_holidays_date ON attendance_holidays(holiday_date) """ ) init_display_metadata(cur) seed_leave_display_metadata(cur) _ = BUSINESS_TABLES conn.commit() finally: conn.close()