Documentation
¶
Overview ¶
storage/session.go
Index ¶
- Constants
- Variables
- func IsNotFoundError(err error) bool
- type CacheConfig
- type DatabaseConfig
- type EntityType
- type Option
- type Peer
- type PeerStorage
- func (ps *PeerStorage) AddPeer(iD, accessHash int64, peerType EntityType, userName string)
- func (ps *PeerStorage) Close() error
- func (ps *PeerStorage) DeleteSession(phone string) error
- func (ps *PeerStorage) GetAllSessions() ([]*Session, error)
- func (ps *PeerStorage) GetInputPeerById(iD int64) tg.InputPeerClass
- func (ps *PeerStorage) GetInputPeerByUsername(userName string) tg.InputPeerClass
- func (ps *PeerStorage) GetPeerById(iD int64) *Peer
- func (ps *PeerStorage) GetPeerByUsername(username string) *Peer
- func (ps *PeerStorage) GetSession(phone string) (*Session, error)
- func (ps *PeerStorage) UpdateSession(session *Session) error
- type Session
- type StorageConfig
Constants ¶
View Source
const ( DefaultUsername = "" DefaultAccessHash = 0 )
View Source
const LatestVersion = 1
Variables ¶
View Source
var ( ErrNotFound = errors.New("record not found") ErrInvalidConfig = errors.New("invalid configuration") ErrDatabaseConnFail = errors.New("failed to connect to database") ErrCacheInitFail = errors.New("failed to initialize cache") ErrStorageNotReady = errors.New("storage is not ready") )
View Source
var DefaultStorageConfig = &StorageConfig{ Cache: CacheConfig{ Enabled: true, InMemoryOnly: false, TimeToLive: "6h", CleanInterval: "24h", Revaluate: true, InitialSize: 1000, ShardCount: 32, }, Database: DatabaseConfig{ MaxOpenConns: 100, MaxIdleConns: 10, ConnMaxLifetime: "1h", ConnMaxIdleTime: "30m", LogLevel: "silent", }, }
Functions ¶
func IsNotFoundError ¶
Helper function to check if error is a "not found" error
Types ¶
type CacheConfig ¶
type CacheConfig struct {
Enabled bool `yaml:"enabled" env:"CACHE_ENABLED" envDefault:"true"`
InMemoryOnly bool `yaml:"inMemoryOnly" env:"CACHE_IN_MEMORY_ONLY" envDefault:"false"`
TimeToLive string `yaml:"timeToLive" env:"CACHE_TTL" envDefault:"6h"`
CleanInterval string `yaml:"cleanInterval" env:"CACHE_CLEAN_INTERVAL" envDefault:"24h"`
Revaluate bool `yaml:"revaluate" env:"CACHE_REVALUATE" envDefault:"true"`
InitialSize int `yaml:"initialSize" env:"CACHE_INITIAL_SIZE" envDefault:"1000"`
ShardCount int `yaml:"shardCount" env:"CACHE_SHARD_COUNT" envDefault:"32"`
}
type DatabaseConfig ¶
type DatabaseConfig struct {
MaxOpenConns int `yaml:"maxOpenConns" env:"DB_MAX_OPEN_CONNS" envDefault:"100"`
MaxIdleConns int `yaml:"maxIdleConns" env:"DB_MAX_IDLE_CONNS" envDefault:"10"`
ConnMaxLifetime string `yaml:"connMaxLifetime" env:"DB_CONN_MAX_LIFETIME" envDefault:"1h"`
ConnMaxIdleTime string `yaml:"connMaxIdleTime" env:"DB_CONN_MAX_IDLE_TIME" envDefault:"30m"`
LogLevel string `yaml:"logLevel" env:"DB_LOG_LEVEL" envDefault:"silent"`
TablePrefix string `yaml:"tablePrefix" env:"DB_TABLE_PREFIX" envDefault:""`
}
type EntityType ¶
type EntityType int
const ( TypeUser EntityType TypeChat TypeChannel )
func (EntityType) GetInt ¶
func (e EntityType) GetInt() int
type Option ¶
type Option func(*PeerStorage) error
type PeerStorage ¶
func NewPeerStorage ¶
func NewPeerStorage(ctx context.Context, cfg *StorageConfig, dialector gorm.Dialector, opts ...Option) (*PeerStorage, error)
func (*PeerStorage) AddPeer ¶
func (ps *PeerStorage) AddPeer(iD, accessHash int64, peerType EntityType, userName string)
func (*PeerStorage) Close ¶
func (ps *PeerStorage) Close() error
func (*PeerStorage) DeleteSession ¶
func (ps *PeerStorage) DeleteSession(phone string) error
DeleteSession removes a session from storage
func (*PeerStorage) GetAllSessions ¶
func (ps *PeerStorage) GetAllSessions() ([]*Session, error)
GetAllSessions returns all sessions from storage
func (*PeerStorage) GetInputPeerById ¶
func (ps *PeerStorage) GetInputPeerById(iD int64) tg.InputPeerClass
func (*PeerStorage) GetInputPeerByUsername ¶
func (ps *PeerStorage) GetInputPeerByUsername(userName string) tg.InputPeerClass
func (*PeerStorage) GetPeerById ¶
func (ps *PeerStorage) GetPeerById(iD int64) *Peer
func (*PeerStorage) GetPeerByUsername ¶
func (ps *PeerStorage) GetPeerByUsername(username string) *Peer
func (*PeerStorage) GetSession ¶
func (ps *PeerStorage) GetSession(phone string) (*Session, error)
GetSession returns the session saved in storage.
func (*PeerStorage) UpdateSession ¶
func (ps *PeerStorage) UpdateSession(session *Session) error
UpdateSession saves or updates the session in storage>
type StorageConfig ¶
type StorageConfig struct {
Database DatabaseConfig `yaml:"database"`
Cache CacheConfig `yaml:"cache"`
}
func LoadConfig ¶
func LoadConfig() (*StorageConfig, error)
LoadConfig loads configuration from environment variables
func LoadConfigFromFile ¶
func LoadConfigFromFile(path string) (*StorageConfig, error)
LoadConfigFromFile loads configuration from a YAML file and environment variables
Click to show internal directories.
Click to hide internal directories.