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

@@ -217,40 +217,76 @@ func hashToken(token string) string {
func userFromCreateRow(u repository.CreateUserRow) models.User {
return models.User{
ID: utils.FromPgUUID(u.ID),
Email: u.Email,
Timezone: u.Timezone,
CreatedAt: utils.FromPgTimestamptz(u.CreatedAt),
UpdatedAt: utils.FromPgTimestamptz(u.UpdatedAt),
ID: utils.FromPgUUID(u.ID),
Email: u.Email,
Timezone: u.Timezone,
WeekStartDay: 0,
DateFormat: "MM/dd/yyyy",
TimeFormat: "12h",
DefaultEventDurationMinutes: 60,
DefaultReminderMinutes: 10,
ShowWeekends: true,
WorkingHoursStart: "09:00",
WorkingHoursEnd: "17:00",
NotificationsEmail: true,
CreatedAt: utils.FromPgTimestamptz(u.CreatedAt),
UpdatedAt: utils.FromPgTimestamptz(u.UpdatedAt),
}
}
func userFromEmailRow(u repository.GetUserByEmailRow) models.User {
return models.User{
ID: utils.FromPgUUID(u.ID),
Email: u.Email,
Timezone: u.Timezone,
CreatedAt: utils.FromPgTimestamptz(u.CreatedAt),
UpdatedAt: utils.FromPgTimestamptz(u.UpdatedAt),
ID: utils.FromPgUUID(u.ID),
Email: u.Email,
Timezone: u.Timezone,
WeekStartDay: int(u.WeekStartDay),
DateFormat: u.DateFormat,
TimeFormat: u.TimeFormat,
DefaultEventDurationMinutes: int(u.DefaultEventDurationMinutes),
DefaultReminderMinutes: int(u.DefaultReminderMinutes),
ShowWeekends: u.ShowWeekends,
WorkingHoursStart: u.WorkingHoursStart,
WorkingHoursEnd: u.WorkingHoursEnd,
NotificationsEmail: u.NotificationsEmail,
CreatedAt: utils.FromPgTimestamptz(u.CreatedAt),
UpdatedAt: utils.FromPgTimestamptz(u.UpdatedAt),
}
}
func userFromIDRow(u repository.GetUserByIDRow) models.User {
return models.User{
ID: utils.FromPgUUID(u.ID),
Email: u.Email,
Timezone: u.Timezone,
CreatedAt: utils.FromPgTimestamptz(u.CreatedAt),
UpdatedAt: utils.FromPgTimestamptz(u.UpdatedAt),
ID: utils.FromPgUUID(u.ID),
Email: u.Email,
Timezone: u.Timezone,
WeekStartDay: int(u.WeekStartDay),
DateFormat: u.DateFormat,
TimeFormat: u.TimeFormat,
DefaultEventDurationMinutes: int(u.DefaultEventDurationMinutes),
DefaultReminderMinutes: int(u.DefaultReminderMinutes),
ShowWeekends: u.ShowWeekends,
WorkingHoursStart: u.WorkingHoursStart,
WorkingHoursEnd: u.WorkingHoursEnd,
NotificationsEmail: u.NotificationsEmail,
CreatedAt: utils.FromPgTimestamptz(u.CreatedAt),
UpdatedAt: utils.FromPgTimestamptz(u.UpdatedAt),
}
}
func userFromUpdateRow(u repository.UpdateUserRow) models.User {
return models.User{
ID: utils.FromPgUUID(u.ID),
Email: u.Email,
Timezone: u.Timezone,
CreatedAt: utils.FromPgTimestamptz(u.CreatedAt),
UpdatedAt: utils.FromPgTimestamptz(u.UpdatedAt),
ID: utils.FromPgUUID(u.ID),
Email: u.Email,
Timezone: u.Timezone,
WeekStartDay: int(u.WeekStartDay),
DateFormat: u.DateFormat,
TimeFormat: u.TimeFormat,
DefaultEventDurationMinutes: int(u.DefaultEventDurationMinutes),
DefaultReminderMinutes: int(u.DefaultReminderMinutes),
ShowWeekends: u.ShowWeekends,
WorkingHoursStart: u.WorkingHoursStart,
WorkingHoursEnd: u.WorkingHoursEnd,
NotificationsEmail: u.NotificationsEmail,
CreatedAt: utils.FromPgTimestamptz(u.CreatedAt),
UpdatedAt: utils.FromPgTimestamptz(u.UpdatedAt),
}
}