| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // package rec_meta -- мета-информация записи KV-хранилища
- package rec_meta
- import (
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev1/helpers"
- )
- var (
- hassert = helpers.Hassert
- )
- // RecMeta -- мета-информация записи KV-хранилища
- //
- // Вся информация о записи хранится в JSON-строке, без форматирования
- // для того, что можно было файл индексов бакета писать построчно.
- // Даже если ключ содержит пробелы или экранированное форматирование
- // JSON их экранирует внутри.
- type RecMeta struct {
- Key_ kalias.AKey `json:"key"` // Ключ
- Vers_ int64 `json:"vers"` // Версия записи
- Operation_ string `json:"operation"` // Тип операции над записью
- CreatedAt_ kalias.ATime `json:"created_at"` // Дата создания записи
- UpdateAt_ kalias.ATime `json:"update_at"` // Дата последнего обновления
- Sha_ string `json:"sha"` // Хеш мета-информации записи (вместе с значением, но без этого поля разумеется)
- Offset_ int64 `json:"-"` // Смещение в файле, игнорируется при записи
- }
- // NewRecMeta -- создание новой мета-информации записи KV-хранилища
- func NewRecMeta(key kalias.AKey) *RecMeta {
- hassert(key != "", "NewRecMeta: key is empty")
- sf := &RecMeta{
- Key_: key,
- Vers_: 1,
- Operation_: "create",
- CreatedAt_: helpers.TimeNowStr(),
- }
- _ = ktypes.IRecMeta(sf)
- return sf
- }
- // Key -- ключ записи
- func (sf *RecMeta) Key() kalias.AKey {
- return sf.Key_
- }
- // Vers -- версия записи
- func (sf *RecMeta) Vers() int64 {
- return sf.Vers_
- }
- // Operation -- тип операции над записью
- func (sf *RecMeta) Operation() string {
- return sf.Operation_
- }
- // CreatedAt -- дата создания записи
- func (sf *RecMeta) CreatedAt() kalias.ATime {
- return sf.CreatedAt_
- }
- // UpdateAt -- дата последнего обновления
- func (sf *RecMeta) UpdateAt() kalias.ATime {
- return sf.UpdateAt_
- }
|