mirror of
https://github.com/safing/portbase
synced 2025-09-01 10:09:50 +00:00
Improve database meta handling
This commit is contained in:
parent
0e2733a342
commit
1133c78f85
5 changed files with 24 additions and 9 deletions
|
@ -116,11 +116,6 @@ func (c *Controller) Put(r record.Record) (err error) {
|
|||
}
|
||||
}
|
||||
|
||||
if r.Meta() == nil {
|
||||
r.SetMeta(&record.Meta{})
|
||||
}
|
||||
r.Meta().Update()
|
||||
|
||||
c.writeLock.RLock()
|
||||
defer c.writeLock.RUnlock()
|
||||
|
||||
|
|
|
@ -36,9 +36,7 @@ type Options struct {
|
|||
|
||||
// Apply applies options to the record metadata.
|
||||
func (o *Options) Apply(r record.Record) {
|
||||
if r.Meta() == nil {
|
||||
r.SetMeta(&record.Meta{})
|
||||
}
|
||||
r.UpdateMeta()
|
||||
if o.AlwaysMakeSecret {
|
||||
r.Meta().MakeSecret()
|
||||
}
|
||||
|
@ -198,7 +196,7 @@ func (i *Interface) PutNew(r record.Record) error {
|
|||
defer r.Unlock()
|
||||
|
||||
if r.Meta() == nil {
|
||||
r.SetMeta(&record.Meta{})
|
||||
r.CreateMeta()
|
||||
}
|
||||
r.Meta().Reset()
|
||||
i.options.Apply(r)
|
||||
|
|
|
@ -57,6 +57,14 @@ func (b *Base) CreateMeta() {
|
|||
b.meta = &Meta{}
|
||||
}
|
||||
|
||||
// UpdateMeta creates the metadata if it does not exist and updates it.
|
||||
func (b *Base) UpdateMeta() {
|
||||
if b.meta == nil {
|
||||
b.meta = &Meta{}
|
||||
}
|
||||
b.meta.Update()
|
||||
}
|
||||
|
||||
// SetMeta sets the metadata on the database record, it should only be called after loading the record. Use MoveTo to save the record with another key.
|
||||
func (b *Base) SetMeta(meta *Meta) {
|
||||
b.meta = meta
|
||||
|
|
|
@ -106,3 +106,15 @@ func (m *Meta) CheckPermission(local, internal bool) (permitted bool) {
|
|||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// Duplicate returns a new copy of Meta.
|
||||
func (m *Meta) Duplicate() *Meta {
|
||||
return &Meta{
|
||||
Created: m.Created,
|
||||
Modified: m.Modified,
|
||||
Expires: m.Expires,
|
||||
Deleted: m.Deleted,
|
||||
secret: m.secret,
|
||||
cronjewel: m.cronjewel,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ type Record interface {
|
|||
MoveTo(key string) // test:config
|
||||
Meta() *Meta
|
||||
SetMeta(meta *Meta)
|
||||
CreateMeta()
|
||||
UpdateMeta()
|
||||
|
||||
Marshal(self Record, format uint8) ([]byte, error)
|
||||
MarshalRecord(self Record) ([]byte, error)
|
||||
|
|
Loading…
Add table
Reference in a new issue