|
@@ -3,15 +3,29 @@ package rec_meta
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
|
|
|
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/store_key"
|
|
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
|
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/voc/etime"
|
|
"gitp78su.ipnodns.ru/svi/kern/v4/lev0/voc/etime"
|
|
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lsi/store_ent/store_key"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
var (
|
|
|
hassert = helpers.Hassert
|
|
hassert = helpers.Hassert
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+// IRecMeta -- интерфейс мета-информации записи KV-хранилища.
|
|
|
|
|
+type IRecMeta interface {
|
|
|
|
|
+ // Key -- ключ записи
|
|
|
|
|
+ Key() store_key.IStoreKeyFix
|
|
|
|
|
+ // Vers -- версия записи
|
|
|
|
|
+ Vers() int64
|
|
|
|
|
+ // Operation -- тип операции над записью
|
|
|
|
|
+ Operation() string
|
|
|
|
|
+ // CreatedAt -- дата создания записи
|
|
|
|
|
+ CreatedAt() core_spec.ITime
|
|
|
|
|
+ // UpdateAt -- дата последнего обновления
|
|
|
|
|
+ UpdateAt() core_spec.ITimeMut
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// RecMeta -- мета-информация записи KV-хранилища.
|
|
// RecMeta -- мета-информация записи KV-хранилища.
|
|
|
//
|
|
//
|
|
|
// Вся информация о записи хранится в JSON-строке, без форматирования
|
|
// Вся информация о записи хранится в JSON-строке, без форматирования
|
|
@@ -19,11 +33,11 @@ var (
|
|
|
// Даже если ключ содержит пробелы или экранированное форматирование
|
|
// Даже если ключ содержит пробелы или экранированное форматирование
|
|
|
// JSON их экранирует внутри.
|
|
// JSON их экранирует внутри.
|
|
|
type RecMeta struct {
|
|
type RecMeta struct {
|
|
|
- Key_ *store_key.AStoreKey `json:"key"` // Ключ
|
|
|
|
|
- Vers_ int64 `json:"vers"` // Версия записи
|
|
|
|
|
- Operation_ string `json:"operation"` // Тип операции над записью
|
|
|
|
|
- createdAt_ core_spec.ITime `voc:"created_at"` // Дата создания записи
|
|
|
|
|
- updateAt_ core_spec.ITimeMut `voc:"update_at"` // Дата последнего обновления
|
|
|
|
|
|
|
+ Key_ store_key.AStoreKey `json:"key"` // Ключ
|
|
|
|
|
+ Vers_ int64 `json:"vers"` // Версия записи
|
|
|
|
|
+ Operation_ string `json:"operation"` // Тип операции над записью
|
|
|
|
|
+ createdAt_ core_spec.ITime `voc:"created_at"` // Дата создания записи
|
|
|
|
|
+ updateAt_ core_spec.ITimeMut `voc:"update_at"` // Дата последнего обновления
|
|
|
|
|
|
|
|
// Хеш мета-информации записи (вместе с значением, но без этого поля разумеется)
|
|
// Хеш мета-информации записи (вместе с значением, но без этого поля разумеется)
|
|
|
Sha_ string `json:"sha"`
|
|
Sha_ string `json:"sha"`
|
|
@@ -31,24 +45,24 @@ type RecMeta struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// NewRecMeta -- создание новой мета-информации записи KV-хранилища.
|
|
// NewRecMeta -- создание новой мета-информации записи KV-хранилища.
|
|
|
-func NewRecMeta(key *store_key.AStoreKey) *RecMeta {
|
|
|
|
|
|
|
+func NewRecMeta(key store_key.IStoreKeyFix) *RecMeta {
|
|
|
hassert(key != nil, "NewRecMeta: key==nil")
|
|
hassert(key != nil, "NewRecMeta: key==nil")
|
|
|
sf := &RecMeta{
|
|
sf := &RecMeta{
|
|
|
- Key_: key,
|
|
|
|
|
|
|
+ Key_: key.Get(),
|
|
|
Vers_: 1,
|
|
Vers_: 1,
|
|
|
Operation_: "create",
|
|
Operation_: "create",
|
|
|
createdAt_: etime.NewETimeAuto(),
|
|
createdAt_: etime.NewETimeAuto(),
|
|
|
updateAt_: etime.NewETimeAutoMut(),
|
|
updateAt_: etime.NewETimeAutoMut(),
|
|
|
}
|
|
}
|
|
|
- _ = core_spec.IRecMeta(sf)
|
|
|
|
|
|
|
+ _ = IRecMeta(sf)
|
|
|
return sf
|
|
return sf
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Key -- ключ записи.
|
|
// Key -- ключ записи.
|
|
|
//
|
|
//
|
|
|
//go:fix inline
|
|
//go:fix inline
|
|
|
-func (sf *RecMeta) Key() *store_key.AStoreKey {
|
|
|
|
|
- return sf.Key_
|
|
|
|
|
|
|
+func (sf *RecMeta) Key() store_key.IStoreKeyFix {
|
|
|
|
|
+ return store_key.NewStoreKey(sf.Key_)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Vers -- версия записи.
|
|
// Vers -- версия записи.
|