#!/usr/bin/env python3 """Erstellt eine lokale SQLite Demo-Datenbank mit 4 Beispiel-Terminen.""" import os import sqlite3 from datetime import datetime, timedelta DB_PATH = os.environ.get("DB_PATH", os.path.join(os.path.dirname(__file__), "demo.db")) SCHEMA = """ CREATE TABLE IF NOT EXISTS calendar_events ( id INTEGER PRIMARY KEY AUTOINCREMENT, calendar_label TEXT NOT NULL, instance_key TEXT NOT NULL, uid TEXT NOT NULL, recurrence_id TEXT, summary TEXT, description TEXT, location TEXT, start_at TEXT NOT NULL, end_at TEXT, all_day INTEGER NOT NULL DEFAULT 0, status TEXT DEFAULT 'CONFIRMED', deleted INTEGER NOT NULL DEFAULT 0, last_seen_at TEXT NOT NULL, created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')), UNIQUE (calendar_label, instance_key) ); CREATE INDEX IF NOT EXISTS idx_start ON calendar_events(start_at); CREATE INDEX IF NOT EXISTS idx_deleted ON calendar_events(deleted); """ def seed(): if os.path.exists(DB_PATH): os.remove(DB_PATH) conn = sqlite3.connect(DB_PATH) conn.executescript(SCHEMA) now = datetime.now().replace(second=0, microsecond=0, tzinfo=None) today = now.replace(hour=0, minute=0, second=0) events = [ { "calendar_label": "demo", "instance_key": f"team-daily-{today.strftime('%Y%m%d')}", "uid": "team-daily-001@demo", "summary": "Team Daily", "description": "Tägliches Standup-Meeting mit dem gesamten Team.", "location": "Besprechungsraum A / Zoom", "start_at": (today + timedelta(hours=14)).strftime("%Y-%m-%d %H:%M:%S"), "end_at": (today + timedelta(hours=15)).strftime("%Y-%m-%d %H:%M:%S"), "all_day": 0, "status": "CONFIRMED", }, { "calendar_label": "demo", "instance_key": f"yoga-{today.strftime('%Y%m%d')}", "uid": "yoga-002@demo", "summary": "Yoga Kurs", "description": "Wöchentlicher Yoga-Kurs in der Volkshochschule.", "location": "Volkshochschule, Raum 204", "start_at": (today + timedelta(hours=18, minutes=30)).strftime("%Y-%m-%d %H:%M:%S"), "end_at": (today + timedelta(hours=20)).strftime("%Y-%m-%d %H:%M:%S"), "all_day": 0, "status": "CONFIRMED", }, { "calendar_label": "demo", "instance_key": f"deadline-{(today + timedelta(days=1)).strftime('%Y%m%d')}", "uid": "deadline-003@demo", "summary": "Projekt-Deadline", "description": "Abgabe des Projektberichts an die Geschäftsleitung.", "location": "", "start_at": (today + timedelta(days=1)).strftime("%Y-%m-%d 00:00:00"), "end_at": (today + timedelta(days=1)).strftime("%Y-%m-%d 23:59:59"), "all_day": 1, "status": "TENTATIVE", }, { "calendar_label": "demo", "instance_key": f"arzt-{(today + timedelta(days=2)).strftime('%Y%m%d')}", "uid": "arzt-004@demo", "summary": "Arzttermin", "description": "Routineuntersuchung beim Hausarzt. Bitte Impfpass mitbringen.", "location": "Dr. Müller, Gesundheitsstraße 12", "start_at": (today + timedelta(days=2, hours=10)).strftime("%Y-%m-%d %H:%M:%S"), "end_at": (today + timedelta(days=2, hours=11, minutes=30)).strftime("%Y-%m-%d %H:%M:%S"), "all_day": 0, "status": "CONFIRMED", }, ] conn.executemany( """INSERT INTO calendar_events (calendar_label, instance_key, uid, summary, description, location, start_at, end_at, all_day, status, last_seen_at) VALUES (:calendar_label, :instance_key, :uid, :summary, :description, :location, :start_at, :end_at, :all_day, :status, datetime('now'))""", events, ) conn.commit() conn.close() print(f"Demo-Datenbank erstellt: {DB_PATH}") print(f"4 Demo-Events eingefuegt.") if __name__ == "__main__": seed()