mirror of
https://github.com/certimate-go/certimate.git
synced 2026-09-24 23:10:13 +08:00
72 lines
1.7 KiB
Go
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
|
|
}
|