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

120 lines
3.4 KiB
Go

package peers
import (
"context"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)
// Value is storage value.
type Value struct {
AccessHash int64
}
// Key is storage key.
type Key struct {
Prefix string
ID int64
}
// Storage is peer storage.
type Storage interface {
Save(ctx context.Context, key Key, value Value) error
Find(ctx context.Context, key Key) (value Value, found bool, _ error)
SavePhone(ctx context.Context, phone string, key Key) error
FindPhone(ctx context.Context, phone string) (key Key, value Value, found bool, err error)
GetContactsHash(ctx context.Context) (int64, error)
SaveContactsHash(ctx context.Context, hash int64) error
}
const (
usersPrefix = "users_"
chatsPrefix = "chats_"
channelPrefix = "channel_"
)
// Cache is peer entities cache.
type Cache interface {
SaveUsers(ctx context.Context, users ...*tg.User) error
SaveUserFulls(ctx context.Context, users ...*tg.UserFull) error
FindUser(ctx context.Context, id int64) (*tg.User, bool, error)
FindUserFull(ctx context.Context, id int64) (*tg.UserFull, bool, error)
SaveChats(ctx context.Context, chats ...*tg.Chat) error
SaveChatFulls(ctx context.Context, chats ...*tg.ChatFull) error
FindChat(ctx context.Context, id int64) (*tg.Chat, bool, error)
FindChatFull(ctx context.Context, id int64) (*tg.ChatFull, bool, error)
SaveChannels(ctx context.Context, channels ...*tg.Channel) error
SaveChannelFulls(ctx context.Context, channels ...*tg.ChannelFull) error
FindChannel(ctx context.Context, id int64) (*tg.Channel, bool, error)
FindChannelFull(ctx context.Context, id int64) (*tg.ChannelFull, bool, error)
}
// NoopCache is no-op implementation of Cache.
type NoopCache struct{}
var _ Cache = NoopCache{}
// SaveUsers implements Cache.
func (n NoopCache) SaveUsers(ctx context.Context, users ...*tg.User) error {
return nil
}
// SaveUserFulls implements Cache.
func (n NoopCache) SaveUserFulls(ctx context.Context, users ...*tg.UserFull) error {
return nil
}
// FindUser implements Cache.
func (n NoopCache) FindUser(ctx context.Context, id int64) (*tg.User, bool, error) {
return nil, false, nil
}
// FindUserFull implements Cache.
func (n NoopCache) FindUserFull(ctx context.Context, id int64) (*tg.UserFull, bool, error) {
return nil, false, nil
}
// SaveChats implements Cache.
func (n NoopCache) SaveChats(ctx context.Context, chats ...*tg.Chat) error {
return nil
}
// SaveChatFulls implements Cache.
func (n NoopCache) SaveChatFulls(ctx context.Context, chats ...*tg.ChatFull) error {
return nil
}
// FindChat implements Cache.
func (n NoopCache) FindChat(ctx context.Context, id int64) (*tg.Chat, bool, error) {
return nil, false, nil
}
// FindChatFull implements Cache.
func (n NoopCache) FindChatFull(ctx context.Context, id int64) (*tg.ChatFull, bool, error) {
return nil, false, nil
}
// SaveChannels implements Cache.
func (n NoopCache) SaveChannels(ctx context.Context, channels ...*tg.Channel) error {
return nil
}
// SaveChannelFulls implements Cache.
func (n NoopCache) SaveChannelFulls(ctx context.Context, channels ...*tg.ChannelFull) error {
return nil
}
// FindChannel implements Cache.
func (n NoopCache) FindChannel(ctx context.Context, id int64) (*tg.Channel, bool, error) {
return nil, false, nil
}
// FindChannelFull implements Cache.
func (n NoopCache) FindChannelFull(ctx context.Context, id int64) (*tg.ChannelFull, bool, error) {
return nil, false, nil
}