mirror of
https://github.com/skoelle/calender_sync.git
synced 2026-09-17 18:20:24 +00:00
113 lines
4.1 KiB
Python
113 lines
4.1 KiB
Python
#!/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()
|