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>
46 lines
1.7 KiB
Go
46 lines
1.7 KiB
Go
// 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"`
|
||
}
|