From e42fa754df6bd5bd8493a625d2203dd9fab900f3 Mon Sep 17 00:00:00 2001 From: nikurasu Date: Fri, 8 Mar 2024 21:20:04 +0100 Subject: [PATCH] feat(collections): add migrations --- src/main.go | 13 ++-- src/migrations/1709919733_initial_admin.go | 26 +++++++ ...709927213_badge_users_collection_create.go | 69 +++++++++++++++++++ 3 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 src/migrations/1709919733_initial_admin.go create mode 100644 src/migrations/1709927213_badge_users_collection_create.go diff --git a/src/main.go b/src/main.go index aa4a81c..529fdbf 100644 --- a/src/main.go +++ b/src/main.go @@ -3,13 +3,12 @@ package main import ( "log" "os" + "strings" "github.com/pocketbase/pocketbase" - "github.com/pocketbase/pocketbase/apis" - "github.com/pocketbase/pocketbase/core" "github.com/pocketbase/pocketbase/plugins/migratecmd" c "ulmer-furs.de/uf-bob/v2/config" - //_ "ulmer-furs.de/uf-bob/v2/migrations" + _ "ulmer-furs.de/uf-bob/v2/migrations" ) func main() { @@ -17,13 +16,11 @@ func main() { app := pocketbase.New() - app.OnBeforeServe().Add(func(e *core.ServeEvent) error { - e.Router.GET("/*", apis.StaticDirectoryHandler(os.DirFS("./pb_public"), false)) - return nil + isGoRun := strings.HasPrefix(os.Args[0], os.TempDir()) + migratecmd.MustRegister(app, app.RootCmd, migratecmd.Config{ + Automigrate: isGoRun, }) - migratecmd.MustRegister(app, app.RootCmd, migratecmd.Config{}) - if err := app.Start(); err != nil { log.Fatal(err) } diff --git a/src/migrations/1709919733_initial_admin.go b/src/migrations/1709919733_initial_admin.go new file mode 100644 index 0000000..2758f4c --- /dev/null +++ b/src/migrations/1709919733_initial_admin.go @@ -0,0 +1,26 @@ +package migrations + +import ( + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/daos" + m "github.com/pocketbase/pocketbase/migrations" + "github.com/pocketbase/pocketbase/models" + c "ulmer-furs.de/uf-bob/v2/config" +) + +func init() { + m.Register(func(db dbx.Builder) error { + dao := daos.New(db) + admin := &models.Admin{} + admin.Email = c.Env.GetString("admin_email") + admin.SetPassword(c.Env.GetString("admin_pass")) + return dao.SaveAdmin(admin) + }, func(db dbx.Builder) error { + dao := daos.New(db) + admin, _ := dao.FindAdminByEmail(c.Env.GetString("admin_email")) + if admin != nil { + return dao.DeleteAdmin(admin) + } + return nil + }) +} diff --git a/src/migrations/1709927213_badge_users_collection_create.go b/src/migrations/1709927213_badge_users_collection_create.go new file mode 100644 index 0000000..bece556 --- /dev/null +++ b/src/migrations/1709927213_badge_users_collection_create.go @@ -0,0 +1,69 @@ +package migrations + +import ( + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/daos" + m "github.com/pocketbase/pocketbase/migrations" + "github.com/pocketbase/pocketbase/models" + "github.com/pocketbase/pocketbase/models/schema" + "github.com/pocketbase/pocketbase/tools/types" +) + +func init() { + m.Register(func(db dbx.Builder) error { + dao := daos.New(db) + emptyRule := "" + sameUserRule := "@request.auth.id = id" + maxLenght := 8 + collection := &models.Collection{ + Type: models.CollectionTypeAuth, + Name: "badgeUsers", + Schema: schema.NewSchema( + &schema.SchemaField{ + Name: "picture", + Type: schema.FieldTypeFile, + Required: false, + Unique: false, + Options: &schema.FileOptions{ + MimeTypes: []string{ + "image/jpeg", + "image/png", + "image/webp", + "image/gif", + }, + }, + }, + &schema.SchemaField{ + Name: "description", + Type: schema.FieldTypeText, + Required: false, + Unique: false, + Options: &schema.TextOptions{ + Max: &maxLenght, + }, + }, + ), + Options: types.JsonMap{ + "allowEmailAuth": false, + "allowOAuth2Auth": false, + "allowUsernameAuth": true, + "minPasswordLength": 8, + "onlyVerified": false, + "requireEmail": false, + }, + CreateRule: &emptyRule, + UpdateRule: &sameUserRule, + DeleteRule: &sameUserRule, + ViewRule: &sameUserRule, + } + + return dao.SaveCollection(collection) + }, func(db dbx.Builder) error { + dao := daos.New(db) + collection, _ := dao.FindCollectionByNameOrId("badgeUsers") + if collection != nil { + dao.DeleteCollection(collection) + } + return nil + }) +}