Files
mautrix-telegram/pkg/gotd/telegram/updates/storage.go
T
2025-06-27 20:03:37 -07:00

48 lines
1.7 KiB
Go

package updates
import (
"context"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)
// State is the user internalState.
type State struct {
Pts, Qts, Date, Seq int
}
func (s State) fromRemote(remote *tg.UpdatesState) State {
return State{
Pts: remote.Pts,
Qts: remote.Qts,
Date: remote.Date,
Seq: remote.Seq,
}
}
// StateStorage is the users internalState storage.
//
// Note:
// SetPts, SetQts, SetDate, SetSeq, SetDateSeq
// should return error if user internalState does not exist.
type StateStorage interface {
GetState(ctx context.Context, userID int64) (state State, found bool, err error)
SetState(ctx context.Context, userID int64, state State) error
SetPts(ctx context.Context, userID int64, pts int) error
SetQts(ctx context.Context, userID int64, qts int) error
SetDate(ctx context.Context, userID int64, date int) error
SetSeq(ctx context.Context, userID int64, seq int) error
SetDateSeq(ctx context.Context, userID int64, date, seq int) error
GetChannelPts(ctx context.Context, userID, channelID int64) (pts int, found bool, err error)
SetChannelPts(ctx context.Context, userID, channelID int64, pts int) error
ForEachChannels(ctx context.Context, userID int64, f func(ctx context.Context, channelID int64, pts int) error) error
}
// AccessHasher stores user and channel access hashes for a user.
type AccessHasher interface {
SetChannelAccessHash(ctx context.Context, forUserID, channelID, accessHash int64) error
GetChannelAccessHash(ctx context.Context, forUserID, channelID int64) (accessHash int64, found bool, err error)
SetUserAccessHash(ctx context.Context, forUserID, userID, accessHash int64) error
GetUserAccessHash(ctx context.Context, forUserID, userID int64) (accessHash int64, found bool, err error)
}