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:
@@ -45,28 +45,40 @@ func main() {
|
||||
queries := repository.New(pool)
|
||||
|
||||
jwtManager := auth.NewJWTManager(cfg.JWTSecret)
|
||||
auditSvc := service.NewAuditService(queries)
|
||||
calSvc := service.NewCalendarService(pool, queries, auditSvc, cfg.BaseURL)
|
||||
|
||||
var sched service.ReminderScheduler
|
||||
if cfg.RedisAddr != "" {
|
||||
realSched := scheduler.NewScheduler(cfg.RedisAddr)
|
||||
sched = scheduler.NewScheduler(cfg.RedisAddr)
|
||||
} else {
|
||||
sched = scheduler.NoopScheduler{}
|
||||
}
|
||||
if realSched, ok := sched.(*scheduler.Scheduler); ok {
|
||||
defer realSched.Close()
|
||||
sched = realSched
|
||||
}
|
||||
|
||||
eventSvc := service.NewEventService(pool, queries, calSvc, auditSvc, sched)
|
||||
|
||||
if cfg.RedisAddr != "" {
|
||||
realSched := sched.(*scheduler.Scheduler)
|
||||
icsHandler := handlers.NewICSHandler(calSvc, eventSvc, queries)
|
||||
subSyncWorker := scheduler.NewSubscriptionSyncWorker(icsHandler)
|
||||
worker := scheduler.NewReminderWorker(queries)
|
||||
asynqSrv := scheduler.StartWorker(cfg.RedisAddr, worker)
|
||||
asynqSrv := scheduler.StartWorker(cfg.RedisAddr, worker, subSyncWorker)
|
||||
defer asynqSrv.Shutdown()
|
||||
|
||||
enqueuerCtx, enqueuerCancel := context.WithCancel(context.Background())
|
||||
defer enqueuerCancel()
|
||||
go scheduler.StartSubscriptionEnqueuer(enqueuerCtx, queries, realSched, 15*time.Minute)
|
||||
|
||||
log.Println("Redis connected, background jobs enabled")
|
||||
} else {
|
||||
sched = scheduler.NoopScheduler{}
|
||||
log.Println("Redis not configured, background jobs disabled")
|
||||
}
|
||||
|
||||
auditSvc := service.NewAuditService(queries)
|
||||
authSvc := service.NewAuthService(pool, queries, jwtManager, auditSvc)
|
||||
userSvc := service.NewUserService(pool, queries, auditSvc)
|
||||
calSvc := service.NewCalendarService(pool, queries, auditSvc, cfg.BaseURL)
|
||||
eventSvc := service.NewEventService(pool, queries, calSvc, auditSvc, sched)
|
||||
contactSvc := service.NewContactService(queries, auditSvc)
|
||||
availSvc := service.NewAvailabilityService(queries, calSvc, eventSvc)
|
||||
bookingSvc := service.NewBookingService(pool, queries, calSvc, eventSvc)
|
||||
@@ -90,9 +102,9 @@ func main() {
|
||||
}
|
||||
|
||||
authMW := middleware.NewAuthMiddleware(jwtManager, queries)
|
||||
rateLimiter := middleware.NewRateLimiter(100, 200)
|
||||
rateLimiter := middleware.NewRateLimiter(cfg.RateLimitRPS, cfg.RateLimitBurst)
|
||||
|
||||
router := api.NewRouter(h, authMW, rateLimiter)
|
||||
router := api.NewRouter(h, authMW, rateLimiter, cfg)
|
||||
|
||||
srv := &http.Server{
|
||||
Addr: ":" + cfg.ServerPort,
|
||||
|
||||
Reference in New Issue
Block a user