Files
event-driven-shoppinglist/main.go
2025-09-29 08:14:53 +02:00

52 lines
1.2 KiB
Go

package main
import (
"flag"
"os"
logger "git.site.quack-lab.dev/dave/cylogger"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
"github.com/pocketbase/pocketbase/core"
)
var app *pocketbase.PocketBase
// See https://pocketbase.io/docs/go-overview/
func main() {
flag.Parse()
logger.InitFlag()
logger.Info("Starting server")
app = pocketbase.New()
// Initialize event store
eventStore := NewSimpleEventStore(app)
// Setup collections on startup
app.OnServe().BindFunc(func(se *core.ServeEvent) error {
// Setup database tables
logger.Info("Setting up database tables...")
if err := setupCollections(app); err != nil {
logger.Error("Failed to setup database tables: %v", err)
} else {
logger.Info("Database tables setup complete")
}
return se.Next()
})
// Setup API routes
setupAPIRoutes(app, eventStore)
// Serve static files
app.OnServe().BindFunc(func(se *core.ServeEvent) error {
// serves static files from the provided public dir (if exists)
se.Router.GET("/{path...}", apis.Static(os.DirFS("./pb_public"), false))
return se.Next()
})
if err := app.Start(); err != nil {
logger.Error("Error starting server: %v", err)
}
}