Ctrl K
ComunidadGuías…

internal/store/dialog_list_snapshot_cache.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package store

import (
	"context"

	"telesrv/internal/domain"
)

// DialogListSnapshotCacheKey identifies one all-built-in-folders owner header
// base. OwnerHash is the durable dialog_owner generation and is part of the
// shared cache key; shared channel generations are validated from Value.
type DialogListSnapshotCacheKey struct {
	UserID    int64
	OwnerHash int64
}

// DialogListSnapshotCacheValue is a domain-only materialized owner projection.
// It contains owner dialog facts and private top-message/peer payloads covered
// by dialog_owner plus the recorded channel_base dependency hash. Shared
// channel rows/top messages are hydrated through their channel-keyed caches so
// they are not duplicated once per member. Cloud drafts are owner-scoped and
// covered by dialog_owner, so they are materialized with Dialogs; presence,
// privacy, notify settings and TL values remain response-time overlays.
type DialogListSnapshotCacheValue struct {
	DependencyHash int64
	Dialogs        []domain.Dialog
	Messages       []domain.Message
	Users          []domain.User
	State          domain.UpdateState
	ArchiveSummary *domain.DialogArchiveSummary
}

// DialogListSnapshotCache is a rebuildable shared L2. Transport, decode and
// write failures are returned to the caller so production does not silently
// stampede PostgreSQL through an unversioned fallback.
type DialogListSnapshotCache interface {
	GetDialogListSnapshot(context.Context, DialogListSnapshotCacheKey) (DialogListSnapshotCacheValue, bool, error)
	PutDialogListSnapshot(context.Context, DialogListSnapshotCacheKey, DialogListSnapshotCacheValue) error
}