This commit is contained in:
2026-04-22 23:35:59 +01:00
parent df6c33bc3a
commit bee7869af4
116 changed files with 13552 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
package migrations
import (
"git.koval.net/cyclane/cctv/server/models"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
"github.com/pocketbase/pocketbase/tools/types"
)
const (
colCameras = "cameras"
colStreams = "streams"
)
func init() {
m.Register(func(app core.App) error {
cameras := core.NewBaseCollection(colCameras)
cameras.Fields.Add(
&core.TextField{
Name: "name",
Required: true,
},
&core.TextField{
Name: "onvif_host",
},
&core.TextField{
Name: "username",
Required: true,
},
&core.TextField{
Name: models.CameraFPassword,
Required: true,
},
)
cameras.Fields.Add(createdUpdatedFields()...)
cameras.CreateRule = types.Pointer("@request.auth.id != \"\"")
cameras.ViewRule = types.Pointer("@request.auth.id != \"\"")
cameras.ListRule = types.Pointer("@request.auth.id != \"\"")
if err := app.Save(cameras); err != nil {
return err
}
streams := core.NewBaseCollection(colStreams)
streams.Fields.Add(
&core.RelationField{
Name: models.StreamFCamera,
Required: true,
CascadeDelete: true,
CollectionId: cameras.Id,
},
&core.TextField{
Name: "url",
Required: true,
},
&core.NumberField{
Name: "fps",
Required: true,
Min: types.Pointer[float64](0),
},
&core.NumberField{
Name: "height",
Required: true,
OnlyInt: true,
Min: types.Pointer[float64](0),
},
&core.NumberField{
Name: "width",
Required: true,
OnlyInt: true,
Min: types.Pointer[float64](0),
},
)
streams.ViewRule = types.Pointer("@request.auth.id != \"\"")
streams.ListRule = types.Pointer("@request.auth.id != \"\"")
if err := app.Save(streams); err != nil {
return err
}
cameras.Fields.Add(
&core.RelationField{
Name: models.CameraFRecordStream,
CollectionId: streams.Id,
},
)
return app.Save(cameras)
}, func(app core.App) error {
cameras, err := app.FindCollectionByNameOrId(colCameras)
if err != nil {
return err
}
streams, err := app.FindCollectionByNameOrId(colStreams)
if err != nil {
return err
}
cameras.Fields.RemoveByName(models.CameraFRecordStream)
if err := app.Save(cameras); err != nil {
return err
}
if err := app.Delete(streams); err != nil {
return err
}
return app.Delete(cameras)
})
}