| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // package rec_meta -- мета-информация записи KV-хранилища.
- package rec_meta
- import (
- "gitp78su.ipnodns.ru/svi/kern/v4/d0"
- "gitp78su.ipnodns.ru/svi/kern/v4/d2/lsi/store_ent/rec_key"
- )
- // IRecMeta -- интерфейс мета-информации записи KV-хранилища.
- type IRecMeta interface {
- // Vers -- версия записи
- Vers() int64
- // Operation -- тип операции над записью
- Operation() *d0.LTxt
- // CreatedAt -- дата создания записи
- CreatedAt() *d0.LTime
- // UpdateAt -- дата последнего обновления
- UpdateAt() *d0.MTime
- }
- // RecMeta -- мета-информация записи KV-хранилища.
- //
- // Вся информация о записи хранится в JSON-строке, без форматирования
- // для того, что можно было файл индексов бакета писать построчно.
- // Даже если ключ содержит пробелы или экранированное форматирование
- // JSON их экранирует внутри.
- type RecMeta struct {
- owner *d0.LOwner
- Key_ rec_key.ARecKey `json:"key"` // Ключ
- Vers_ int64 `json:"vers"` // Версия записи
- Operation_ *d0.LTxt `json:"operation"` // Тип операции над записью
- createdAt_ *d0.LTime `voc:"created_at"` // Дата создания записи
- updateAt_ *d0.MTime `voc:"update_at"` // Дата последнего обновления
- // Хеш мета-информации записи (вместе с значением, но без этого поля разумеется)
- Sha_ *d0.LTxt `json:"sha"`
- Offset_ int64 `json:"-"` // Смещение в файле, игнорируется при записи
- }
- // NewRecMeta -- создание новой мета-информации записи KV-хранилища.
- func NewRecMeta(owner *d0.LOwner, key rec_key.IRecKeyFix) *RecMeta {
- d0.If(key == nil).Hassert("NewRecMeta: key==nil")
- sf := &RecMeta{
- owner: owner,
- Key_: key.Get(),
- Vers_: 1,
- Operation_: d0.LetTxt(owner, "create"),
- createdAt_: d0.LetTimeAuto(),
- updateAt_: d0.MutTimeAuto(owner),
- }
- _ = IRecMeta(sf)
- return sf
- }
- // Key -- ключ записи.
- //
- func (sf *RecMeta) Key() rec_key.IRecKeyFix {
- return rec_key.NewRecKey(sf.Key_)
- }
- // Vers -- версия записи.
- //
- func (sf *RecMeta) Vers() int64 {
- return sf.Vers_
- }
- // Operation -- тип операции над записью.
- //
- func (sf *RecMeta) Operation() *d0.LTxt {
- return sf.Operation_
- }
- // CreatedAt -- дата создания записи.
- //
- func (sf *RecMeta) CreatedAt() *d0.LTime {
- return sf.createdAt_
- }
- // UpdateAt -- дата последнего обновления.
- //
- func (sf *RecMeta) UpdateAt() *d0.MTime {
- return sf.updateAt_
- }
|