52 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|