Documentation ¶
Overview ¶
Package store provides methods for registering and accessing database adapters.
Index ¶
- func DecodeUid(uid types.Uid) int64
- func EncodeUid(id int64) types.Uid
- func GetNewUUid() string
- func InitAuthLogicalNames(config json.RawMessage) error
- func RegisterAdapter(a adapter.Adapter)
- func RegisterAuthScheme(name string, handler auth.AuthHandler)
- func RegisterMediaHandler(name string, mh media.Handler)
- func RegisterValidator(name string, v validate.Validator)
- type DevicePersistenceInterface
- type FilePersistenceInterface
- type FriendsPersistenceInterface
- type MessagesPersistenceInterface
- type PersistentStorageInterface
- type SubsPersistenceInterface
- type TopicsPersistenceInterface
- type UsersPersistenceInterface
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DecodeUid ¶
DecodeUid takes an XTEA encrypted Uid and decrypts it into an int64. This is needed for sql compatibility. Tte original int64 values are generated by snowflake which ensures that the top bit is unset.
func EncodeUid ¶
EncodeUid applies XTEA encryption to an int64 value. It's the inverse of DecodeUid.
func GetNewUUid ¶
func GetNewUUid() string
func InitAuthLogicalNames ¶
func InitAuthLogicalNames(config json.RawMessage) error
InitAuthLogicalNames initializes authentication mapping "logical handler name":"actual handler name". Logical name must not be empty, actual name could be an empty string.
func RegisterAdapter ¶
RegisterAdapter makes a persistence adapter available. If Register is called twice or if the adapter is nil, it panics.
func RegisterAuthScheme ¶
func RegisterAuthScheme(name string, handler auth.AuthHandler)
RegisterAuthScheme registers an authentication scheme handler. The 'name' must be the hardcoded name, NOT the logical name.
func RegisterMediaHandler ¶
RegisterMediaHandler saves reference to a media handler (file upload-download handler).
func RegisterValidator ¶
RegisterValidator registers validation scheme.
Types ¶
type DevicePersistenceInterface ¶
type DevicePersistenceInterface interface { Update(uid types.Uid, oldDeviceID string, dev *types.DeviceDef) error GetAll(uid ...types.Uid) (map[types.Uid][]types.DeviceDef, int, error) Delete(uid types.Uid, deviceID string) error }
DevicePersistenceInterface is an interface which defines methods used for handling device IDs. Mostly used to generate push notifications.
var Devices DevicePersistenceInterface
Devices is a singleton instance of DevicePersistenceInterface to map methods to.
type FilePersistenceInterface ¶
type FilePersistenceInterface interface { // StartUpload records that the given user initiated a file upload StartUpload(fd *types.FileDef) error // FinishUpload marks started upload as successfully finished. FinishUpload(fd *types.FileDef, success bool, size int64) (*types.FileDef, error) // Get fetches a file record for a unique file id. Get(fid string) (*types.FileDef, error) // DeleteUnused removes unused attachments. DeleteUnused(olderThan time.Time, limit int) error // LinkAttachments connects earlier uploaded attachments to a message or topic to prevent it // from being garbage collected. LinkAttachments(topic string, msgId types.Uid, attachments []string) error }
FilePersistenceInterface is an interface wchich defines methods used for file handling (records or uploaded files).
var Files FilePersistenceInterface
Files is a sigleton instance of FilePersistenceInterface to be used for handling file uploads.
type FriendsPersistenceInterface ¶
type FriendsPersistenceInterface interface { Add(uid *types.Friendcontact) error Get(uid types.Uid) error Delete(uid types.Uid) error }
var Friends FriendsPersistenceInterface
Friends is a singleton ancor object exporting FriendsPersistenceInterface methods.
type MessagesPersistenceInterface ¶
type MessagesPersistenceInterface interface { Save(msg *types.Message, attachmentURLs []string, readBySender bool) error DeleteList(topic string, delID int, forUser types.Uid, ranges []types.Range) error GetAll(topic string, forUser types.Uid, opt *types.QueryOpt) ([]types.Message, error) GetDeleted(topic string, forUser types.Uid, opt *types.QueryOpt) ([]types.Range, int, error) }
MessagesPersistenceInterface is an interface which defines methods for persistent storage of messages.
var Messages MessagesPersistenceInterface
Messages is a singleton ancor object for exporting MessagesPersistenceInterface.
type PersistentStorageInterface ¶
type PersistentStorageInterface interface { Open(workerId int, jsonconf json.RawMessage) error Close() error IsOpen() bool GetAdapter() adapter.Adapter GetAdapterName() string GetAdapterVersion() int GetDbVersion() int InitDb(jsonconf json.RawMessage, reset bool) error UpgradeDb(jsonconf json.RawMessage) error GetUid() types.Uid GetUidString() string DbStats() func() interface{} GetAuthNames() []string GetAuthHandler(name string) auth.AuthHandler GetLogicalAuthHandler(name string) auth.AuthHandler GetValidator(name string) validate.Validator GetMediaHandler() media.Handler UseMediaHandler(name, config string) error }
PersistentStorageInterface defines methods used for interation with persistent storage.
var Store PersistentStorageInterface
Store is the main object for interacting with persistent storage.
type SubsPersistenceInterface ¶
type SubsPersistenceInterface interface { Create(subs ...*types.Subscription) error Get(topic string, user types.Uid, keepDeleted bool) (*types.Subscription, error) Update(topic string, user types.Uid, update map[string]interface{}) error Delete(topic string, user types.Uid) error }
SubsPersistenceInterface is an interface which defines methods for persistent storage of subscriptions.
var Subs SubsPersistenceInterface
Subs is a singleton ancor object exporting SubsPersistenceInterface.
type TopicsPersistenceInterface ¶
type TopicsPersistenceInterface interface { Create(topic *types.Topic, owner types.Uid, private interface{}) error CreateP2P(initiator, invited *types.Subscription) error Get(topic string) (*types.Topic, error) GetUsers(topic string, opts *types.QueryOpt) ([]types.Subscription, error) GetUsersAny(topic string, opts *types.QueryOpt) ([]types.Subscription, error) GetSubs(topic string, opts *types.QueryOpt) ([]types.Subscription, error) GetSubsAny(topic string, opts *types.QueryOpt) ([]types.Subscription, error) Update(topic string, update map[string]interface{}) error OwnerChange(topic string, newOwner types.Uid) error Delete(topic string, isChan, hard bool) error }
TopicsPersistenceInterface is an interface which defines methods for persistent storage of topics.
var Topics TopicsPersistenceInterface
Topics is a singleton ancor object exporting TopicsPersistenceInterface methods.
type UsersPersistenceInterface ¶
type UsersPersistenceInterface interface { Create(user *types.User, private interface{}) (*types.User, error) GetAuthRecord(user types.Uid, scheme string) (string, auth.Level, []byte, time.Time, error) GetAuthUniqueRecord(scheme, unique string) (types.Uid, auth.Level, []byte, time.Time, error) AddAuthRecord(uid types.Uid, authLvl auth.Level, scheme, unique string, secret []byte, expires time.Time) error UpdateAuthRecord(uid types.Uid, authLvl auth.Level, scheme, unique string, secret []byte, expires time.Time) error DelAuthRecords(uid types.Uid, scheme string) error Get(uid types.Uid) (*types.User, error) GetAll(uid ...types.Uid) ([]types.User, error) GetByCred(method, value string) (types.Uid, error) Delete(id types.Uid, hard bool) error UpdateLastSeen(uid types.Uid, userAgent string, when time.Time) error Update(uid types.Uid, update map[string]interface{}) error UpdateTags(uid types.Uid, add, remove, reset []string) ([]string, error) UpdateState(uid types.Uid, state types.ObjState) error GetSubs(id types.Uid) ([]types.Subscription, error) FindSubs(id types.Uid, required [][]string, optional []string) ([]types.Subscription, error) GetTopics(id types.Uid, opts *types.QueryOpt) ([]types.Subscription, error) GetTopicsAny(id types.Uid, opts *types.QueryOpt) ([]types.Subscription, error) GetOwnTopics(id types.Uid) ([]string, error) GetChannels(id types.Uid) ([]string, error) UpsertCred(cred *types.Credential) (bool, error) ConfirmCred(id types.Uid, method string) error FailCred(id types.Uid, method string) error GetActiveCred(id types.Uid, method string) (*types.Credential, error) GetAllCreds(id types.Uid, method string, validatedOnly bool) ([]types.Credential, error) DelCred(id types.Uid, method, value string) error GetUnreadCount(ids ...types.Uid) (map[types.Uid]int, error) }
UsersPersistenceInterface is an interface which defines methods for persistent storage of user records.
var Users UsersPersistenceInterface
Users is a singleton ancor object exporting UsersPersistenceInterface methods.
Directories ¶
Path | Synopsis |
---|---|
Package mock_store is a generated GoMock package.
|
Package mock_store is a generated GoMock package. |
Package types provides data types for persisting objects in the databases.
|
Package types provides data types for persisting objects in the databases. |