Files
certimate/internal/settings/pbhook.go
T

72 lines
1.7 KiB
Go

package settings
import (
"context"
"github.com/pocketbase/pocketbase/core"
"github.com/certimate-go/certimate/internal/app"
"github.com/certimate-go/certimate/internal/domain"
)
func registerSettingsRecordEvents() {
pb := app.GetApp()
pb.OnRecordCreateRequest(domain.CollectionNameSettings).BindFunc(func(e *core.RecordRequestEvent) error {
if err := e.Next(); err != nil {
return err
}
if err := onSettingsRecordCreateOrUpdate(e.Request.Context(), e.App, e.Record); err != nil {
app.GetLogger().Error(err.Error())
return err
}
return nil
})
pb.OnRecordUpdateRequest(domain.CollectionNameSettings).BindFunc(func(e *core.RecordRequestEvent) error {
if err := e.Next(); err != nil {
return err
}
if err := onSettingsRecordCreateOrUpdate(e.Request.Context(), e.App, e.Record); err != nil {
app.GetLogger().Error(err.Error())
return err
}
return nil
})
pb.OnRecordDeleteRequest(domain.CollectionNameSettings).BindFunc(func(e *core.RecordRequestEvent) error {
if err := e.Next(); err != nil {
return err
}
if err := onSettingsRecordDelete(e.Request.Context(), e.App, e.Record); err != nil {
app.GetLogger().Error(err.Error())
return err
}
return nil
})
}
func onSettingsRecordCreateOrUpdate(_ context.Context, pb core.App, record *core.Record) error {
sn := record.GetString("name")
if sn != "" {
content := make(domain.SettingsContent)
record.UnmarshalJSONField("content", &content)
pb.Store().Set(buildPbStoreKey(sn), content)
}
return nil
}
func onSettingsRecordDelete(_ context.Context, pb core.App, record *core.Record) error {
sn := record.GetString("name")
if sn != "" {
pb.Store().Remove(buildPbStoreKey(sn))
}
return nil
}