Documentation ¶
Index ¶
- type Bolt
- func (b *Bolt) Backup(w io.Writer) error
- func (b *Bolt) Close() error
- func (b *Bolt) FindDay(y int, mon time.Month, d int) (*store.Day, bool)
- func (b *Bolt) FindMonth(y int, mon time.Month) (d store.Days, ok bool)
- func (b *Bolt) FindYear(y int) (m store.Months, ok bool)
- func (b *Bolt) PutYear(y int, data store.Months) error
- type Memory
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Bolt ¶
type Bolt struct {
// contains filtered or unexported fields
}
Bolt хранят все данные в одном бакете (const calBucket). По ключу /<y>/<m> хранится JSON, описывающий все дни месяца. Оба ключа - числовые.
Есть два паттерна использования данного сервиса: клиенты могут обращаться через REST API всякий раз, когда нужна информация о дне/неделе, либо запросить, например, год и закешировать у себя. Первое подходит, например, для вывода какого-нибудь UI календаря, последнее — для обработки большого количества данных.
Хранение каждого года в отдельном ключе неудобно с т. з. отладки и не имеет преимуществ по производительности для случая обработки большого кол-ва данных. Хранение каждого дня в отдельном ключе негативно скажется на длительности обработки запросов к месяцу. Хранение каждого месяца в отдельном ключе пока что выглядит самым удачным решением.