feat(collections): add migrations
This commit is contained in:
parent
0cb0da2491
commit
e42fa754df
3 changed files with 100 additions and 8 deletions
13
src/main.go
13
src/main.go
|
@ -3,13 +3,12 @@ package main
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/pocketbase/pocketbase"
|
"github.com/pocketbase/pocketbase"
|
||||||
"github.com/pocketbase/pocketbase/apis"
|
|
||||||
"github.com/pocketbase/pocketbase/core"
|
|
||||||
"github.com/pocketbase/pocketbase/plugins/migratecmd"
|
"github.com/pocketbase/pocketbase/plugins/migratecmd"
|
||||||
c "ulmer-furs.de/uf-bob/v2/config"
|
c "ulmer-furs.de/uf-bob/v2/config"
|
||||||
//_ "ulmer-furs.de/uf-bob/v2/migrations"
|
_ "ulmer-furs.de/uf-bob/v2/migrations"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -17,13 +16,11 @@ func main() {
|
||||||
|
|
||||||
app := pocketbase.New()
|
app := pocketbase.New()
|
||||||
|
|
||||||
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
isGoRun := strings.HasPrefix(os.Args[0], os.TempDir())
|
||||||
e.Router.GET("/*", apis.StaticDirectoryHandler(os.DirFS("./pb_public"), false))
|
migratecmd.MustRegister(app, app.RootCmd, migratecmd.Config{
|
||||||
return nil
|
Automigrate: isGoRun,
|
||||||
})
|
})
|
||||||
|
|
||||||
migratecmd.MustRegister(app, app.RootCmd, migratecmd.Config{})
|
|
||||||
|
|
||||||
if err := app.Start(); err != nil {
|
if err := app.Start(); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
26
src/migrations/1709919733_initial_admin.go
Normal file
26
src/migrations/1709919733_initial_admin.go
Normal file
|
@ -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
|
||||||
|
})
|
||||||
|
}
|
69
src/migrations/1709927213_badge_users_collection_create.go
Normal file
69
src/migrations/1709927213_badge_users_collection_create.go
Normal file
|
@ -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
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in a new issue