/
codespawn
/
tgstream
Обзор
Документация
Войти
/
codespawn
/
tgstream
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
16
CI/CD
Аналитика
Безопасность
master
internal/service/cachekey.go
32 строки
1 KB
codespawn
feat: first working version
27 июн 2026, 17:00
27 июн 2026, 17:00
492bb24
Код
Авторство
О чём код?
package service import ( "fmt" "strings" "time" "gitverse.ru/codespawn/tgstream/internal/port" ) // cacheKey строит ключ L1-кэша фида (AGENTS.md, ревизия v2, п.6). // // MVP: без параметров ключ = имя канала; при наличии Since/Limit — // "channel:since=<rfc3339nano>;limit=<n>;". Разделитель ':' и явные имена полей // исключают склеивание (регресс-тест TestCacheKey_NoGluingRegression). // Каноничное имя канала не содержит ':' (шаблон ^[a-z0-9_]{5,64}$), поэтому // коллизий между channel-частью и params-частью быть не может. func cacheKey(channel string, q port.PostQuery) string { if q.Since.IsZero() && q.Limit == 0 { return channel } var b strings.Builder b.WriteString(channel) b.WriteByte(':') if !q.Since.IsZero() { fmt.Fprintf(&b, "since=%s;", q.Since.UTC().Format(time.RFC3339Nano)) } if q.Limit != 0 { fmt.Fprintf(&b, "limit=%d;", q.Limit) } return b.String() }