Add OpenAPI docs, frontend, migrations, and API updates

- OpenAPI: add missing endpoints (add-from-url, subscriptions, public availability)
- OpenAPI: CalendarSubscription schema, Subscriptions tag
- Frontend app
- Migrations: count_for_availability, subscriptions_sync, user_preferences, calendar_settings
- Config, rate limit, auth, calendar, booking, ICS, availability, user service updates

Made-with: Cursor
This commit is contained in:
Michilis
2026-03-02 14:07:55 +00:00
parent 2cb9d72a7f
commit 75105b8b46
8120 changed files with 1486881 additions and 314 deletions

View File

@@ -41,15 +41,18 @@ type BookingLink struct {
}
type Calendar struct {
ID pgtype.UUID `json:"id"`
OwnerID pgtype.UUID `json:"owner_id"`
Name string `json:"name"`
Color string `json:"color"`
IsPublic bool `json:"is_public"`
PublicToken pgtype.Text `json:"public_token"`
CreatedAt pgtype.Timestamptz `json:"created_at"`
UpdatedAt pgtype.Timestamptz `json:"updated_at"`
DeletedAt pgtype.Timestamptz `json:"deleted_at"`
ID pgtype.UUID `json:"id"`
OwnerID pgtype.UUID `json:"owner_id"`
Name string `json:"name"`
Color string `json:"color"`
IsPublic bool `json:"is_public"`
PublicToken pgtype.Text `json:"public_token"`
CountForAvailability bool `json:"count_for_availability"`
DefaultReminderMinutes pgtype.Int4 `json:"default_reminder_minutes"`
SortOrder int32 `json:"sort_order"`
CreatedAt pgtype.Timestamptz `json:"created_at"`
UpdatedAt pgtype.Timestamptz `json:"updated_at"`
DeletedAt pgtype.Timestamptz `json:"deleted_at"`
}
type CalendarMember struct {
@@ -59,11 +62,12 @@ type CalendarMember struct {
}
type CalendarSubscription struct {
ID pgtype.UUID `json:"id"`
CalendarID pgtype.UUID `json:"calendar_id"`
SourceUrl string `json:"source_url"`
LastSyncedAt pgtype.Timestamptz `json:"last_synced_at"`
CreatedAt pgtype.Timestamptz `json:"created_at"`
ID pgtype.UUID `json:"id"`
CalendarID pgtype.UUID `json:"calendar_id"`
SourceUrl string `json:"source_url"`
LastSyncedAt pgtype.Timestamptz `json:"last_synced_at"`
SyncIntervalMinutes pgtype.Int4 `json:"sync_interval_minutes"`
CreatedAt pgtype.Timestamptz `json:"created_at"`
}
type Contact struct {
@@ -136,12 +140,21 @@ type RefreshToken struct {
}
type User struct {
ID pgtype.UUID `json:"id"`
Email string `json:"email"`
PasswordHash string `json:"password_hash"`
Timezone string `json:"timezone"`
IsActive bool `json:"is_active"`
CreatedAt pgtype.Timestamptz `json:"created_at"`
UpdatedAt pgtype.Timestamptz `json:"updated_at"`
DeletedAt pgtype.Timestamptz `json:"deleted_at"`
ID pgtype.UUID `json:"id"`
Email string `json:"email"`
PasswordHash string `json:"password_hash"`
Timezone string `json:"timezone"`
IsActive bool `json:"is_active"`
WeekStartDay int16 `json:"week_start_day"`
DateFormat string `json:"date_format"`
TimeFormat string `json:"time_format"`
DefaultEventDurationMinutes int32 `json:"default_event_duration_minutes"`
DefaultReminderMinutes int32 `json:"default_reminder_minutes"`
ShowWeekends bool `json:"show_weekends"`
WorkingHoursStart string `json:"working_hours_start"`
WorkingHoursEnd string `json:"working_hours_end"`
NotificationsEmail bool `json:"notifications_email"`
CreatedAt pgtype.Timestamptz `json:"created_at"`
UpdatedAt pgtype.Timestamptz `json:"updated_at"`
DeletedAt pgtype.Timestamptz `json:"deleted_at"`
}