Files
Aether/backend/internal/calendar/model.go
T
marcandClaude Sonnet 5 3f1b2b8a14 feat(calendar): Standard-Zeitzone pro Kalender vorbereiten
Neue Spalte cal_calendars.timezone (Default UTC). CalDAV selbst braucht
sie nicht - jeder Termin trägt seine Zeitzone bereits im eigenen .ics,
und die TZID-Auflösung darin läuft schon korrekt über die
System-Zeitzonendatenbank. Gebraucht wird das Feld erst von der
künftigen Web-Oberfläche zum Anlegen neuer Termine (Phase 3) als
Vorgabe, wenn der Nutzer keine eigene Zeitzone wählt - jetzt schon
angelegt, damit dafür keine weitere Migration nötig wird.

Gegen den laufenden Container geprüft: Migration lief durch, Home-Set-
PROPFIND (nutzt die geänderten SELECTs) weiterhin grün.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 22:56:28 +02:00

46 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package calendar ist ein eigenständiges Modul, kein Kernbestandteil:
// CalDAV für Termine und Aufgaben. Es importiert nichts aus files, sharing
// oder admin – nur auth und acl, wie jeder andere Bereich auch. Ist es
// abgeschaltet, gibt es keine Route und keinen Menüpunkt; die Tabellen
// bleiben dann einfach ungenutzt liegen. Siehe kalender-plan.md.
package calendar
import (
"time"
"github.com/google/uuid"
)
// Calendar ist eine Sammlung von Terminen/Aufgaben – das, was ein Client als
// einen Kalender in seiner Liste zeigt.
type Calendar struct {
ID uuid.UUID `json:"id"`
OwnerID uuid.UUID `json:"owner_id"`
Name string `json:"name"`
Color string `json:"color"`
Description string `json:"description"`
SupportsTodo bool `json:"supports_todo"`
// TimeZone ist die Vorgabe für neue Termine, die die Web-Oberfläche
// künftig hier anlegt (Phase 3). CalDAV selbst braucht sie nicht –
// jeder Termin trägt seine Zeitzone bereits im .ics.
TimeZone string `json:"timezone"`
CTag int64 `json:"ctag"`
CreatedAt time.Time `json:"created_at"`
}
// Object ist ein einzelner Termin oder eine Aufgabe. Data ist die
// vollständige .ics-Datei, unverändert wie vom Client geschickt – siehe
// kalender-plan.md, Abschnitt "Felder".
type Object struct {
ID uuid.UUID `json:"id"`
CalendarID uuid.UUID `json:"calendar_id"`
UID string `json:"uid"`
Component string `json:"component"` // "VEVENT" | "VTODO"
Data string `json:"-"`
ETag string `json:"etag"`
DTStart *time.Time `json:"dtstart,omitempty"`
DTEnd *time.Time `json:"dtend,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}