rec_val.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Package rec_val -- запись KV-хранилища.
  2. package rec_val
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lsi/store_ent/store_key"
  6. )
  7. // IRecVal -- значение записи.
  8. type IRecVal interface {
  9. // Key -- возвращает ключ
  10. Key() store_key.IStoreKeyFix
  11. // Val -- возвращает значение
  12. Val() []byte
  13. }
  14. var (
  15. hassert = helpers.Hassert
  16. )
  17. // RecVal -- запись KV-хранилища.
  18. //
  19. // Запись в файле значений бакета лежит
  20. // в виде JSON-строки, без форматирования для того,
  21. // чтобы можно было файл значений бакета писать построчно.
  22. type RecVal struct {
  23. Key_ store_key.AStoreKey `json:"key"` // Ключ
  24. Val_ []byte `json:"val"` // Значение
  25. }
  26. // NewRecVal -- создание нового значения KV-хранилища.
  27. func NewRecVal(key store_key.IStoreKeyFix, val []byte) *RecVal {
  28. hassert(key != nil, "NewRecVal: key is empty")
  29. if val == nil {
  30. val = []byte{}
  31. }
  32. sf := &RecVal{
  33. Key_: key.Get(),
  34. Val_: val,
  35. }
  36. _ = IRecVal(sf)
  37. return sf
  38. }
  39. // Key -- ключ.
  40. func (sf *RecVal) Key() store_key.IStoreKeyFix {
  41. return store_key.NewStoreKey(sf.Key_)
  42. }
  43. // Val -- значение.
  44. func (sf *RecVal) Val() []byte {
  45. return sf.Val_
  46. }