Compare commits

...

2 commits

Author SHA1 Message Date
nikurasu e42fa754df
feat(collections): add migrations 2024-03-08 21:20:04 +01:00
nikurasu 0cb0da2491
feat(docker): add deployment 2024-03-08 21:19:17 +01:00
5 changed files with 124 additions and 8 deletions

View file

@ -0,0 +1,12 @@
FROM golang:alpine3.22 AS build
WORKDIR /build
COPY ./src ./src
WORKDIR /build/src
RUN apk add gcc libc-dev
RUN go get .
RUN CGO_ENABLED=1 go build -o /build/uf-bob
FROM alpine:3.17 AS final
COPY --from=build /build/uf-bob /bin/uf-bob
COPY --from=build /build/migrations /pb_migrations
ENTRYPOINT [ "/bin/uf-bob", "serve", "--http=0.0.0.0:80", "--dir=/pb_data", "--public-dir=/pb_public", "--migrationsDir=/pb_migrations" ]

View file

@ -0,0 +1,12 @@
version: '3'
services:
uf-bob:
image: dev.cat-enby.club/Ulmer-Furs/uf-bob:0.1
restart: allways
environment:
- ADMIN_EMAIL=test@example.com
- ADMIN_PASS=password
volumes:
- /PATH/TO/STORAGE:/pb_data
ports:
- 3000:80

View file

@ -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)
}

View 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
})
}

View 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
})
}