merged from gramsrv upstream

This commit is contained in:
onysd 2026-09-01 12:06:31 +03:00
parent 79c64ee916
commit 21a0856587
651 changed files with 54774 additions and 4590 deletions

View file

@ -0,0 +1,29 @@
package store
import (
"context"
"time"
"telesrv/internal/domain"
)
// WelcomeMessageStore is the independent durable Layer 229 template state.
// It must not reuse transient EphemeralMessageStore or write update/outbox rows.
type WelcomeMessageStore interface {
CreateWelcomeMessage(ctx context.Context, req domain.CreateWelcomeMessageRequest) (domain.WelcomeMessage, bool, error)
EditWelcomeMessage(ctx context.Context, req domain.EditWelcomeMessageRequest) (domain.WelcomeMessage, error)
ListWelcomeMessages(ctx context.Context, peer domain.Peer, hash int64) (domain.WelcomeMessageList, error)
DeleteWelcomeMessage(ctx context.Context, peer domain.Peer, id int) (bool, error)
DeleteAllWelcomeMessages(ctx context.Context, peer domain.Peer) (bool, error)
HasWelcomeMessages(ctx context.Context, peer domain.Peer) (bool, error)
}
// WelcomeMessageDeliveryStore is the bounded non-PTS recovery boundary for
// actual join greetings. Implementations lease rows, ACK the first compatible
// online delivery, and physically delete pending and delivered rows at TTL.
type WelcomeMessageDeliveryStore interface {
ClaimWelcomeMessageDeliveries(ctx context.Context, owner string, now time.Time, limit int, lease time.Duration) ([]domain.WelcomeMessageDelivery, error)
AckWelcomeMessageDeliveries(ctx context.Context, owner string, ids []int64, deliveredAt time.Time) (int, error)
RetryWelcomeMessageDeliveries(ctx context.Context, owner string, ids []int64, nextAttempt time.Time, lastError string) (int, error)
DeleteExpiredWelcomeMessageDeliveries(ctx context.Context, now time.Time, limit int) (int, error)
}