import json from app.logger import logger from pathlib import Path DB_DIR = Path(__file__).resolve().parent.parent.parent / "data" DB_DIR.mkdir(exist_ok=True) USERS_FILE = DB_DIR / "users.json" BOOKINGS_FILE = DB_DIR / "bookings.json" def _load_json(path, default): if path.exists(): try: with open(path, "r", encoding="utf-8") as fh: return json.load(fh) except (json.JSONDecodeError, OSError): return default return default def _save_json(path, data): with open(path, "w", encoding="utf-8") as fh: json.dump(data, fh, ensure_ascii=False, indent=2) def load_users(): return _load_json(USERS_FILE, {}) def save_users(users): _save_json(USERS_FILE, users) def get_user(user_id): users = load_users() return users.get(str(user_id)) def set_user(user_id, data): users = load_users() users[str(user_id)] = data save_users(users) def load_bookings(): return _load_json(BOOKINGS_FILE, []) def save_bookings(bookings): _save_json(BOOKINGS_FILE, bookings) def create_booking(user_id, service, master, date, time): bookings = load_bookings() booking = { "id": len(bookings) + 1, "user_id": user_id, "service": service, "master": master, "date": date, "time": time, "status": "active", } bookings.append(booking) save_bookings(bookings) return booking def get_busy_times(master, date): bookings = load_bookings() return [ b["time"] for b in bookings if b["master"] == master and b["date"] == date and b["status"] == "active" ] def get_user_bookings(user_id): bookings = load_bookings() return [ b for b in bookings if b["user_id"] == user_id and b["status"] == "active" ] def cancel_booking(booking_id): bookings = load_bookings() for b in bookings: if b["id"] == booking_id: b["status"] = "cancelled" save_bookings(bookings) return True return False def update_booking(booking_id, service, master, date, time): bookings = load_bookings() for b in bookings: if b["id"] == booking_id: b["service"] = service b["master"] = master b["date"] = date b["time"] = time save_bookings(bookings) return b return None