store

package
v0.16.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2020 License: GPL-3.0 Imports: 10 Imported by: 0

Documentation

Overview

Package store provides methods for registering and accessing database adapters.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Close

func Close() error

Close terminates connection to persistent storage.

func DecodeUid

func DecodeUid(uid types.Uid) int64

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

func EncodeUid(id int64) types.Uid

EncodeUid applies XTEA encryption to an int64 value. It's the inverse of DecodeUid.

func GetAdapterName

func GetAdapterName() string

GetAdapterName returns the name of the current adater.

func GetAdapterVersion

func GetAdapterVersion() int

GetAdapterVersion returns version of the current adater.

func GetAuthHandler

func GetAuthHandler(name string) auth.AuthHandler

GetAuthHandler returns an auth handler by actual hardcoded name irrspectful of logical naming.

func GetAuthNames

func GetAuthNames() []string

GetAuthNames returns all addressable auth handler names, logical and hardcoded excluding those which are disabled like "basic:".

func GetDbVersion

func GetDbVersion() int

GetDbVersion returns version of the underlying database.

func GetLogicalAuthHandler

func GetLogicalAuthHandler(name string) auth.AuthHandler

GetLogicalAuthHandler returns an auth handler by logical name. If there is no handler by that logical name it tries to find one by the hardcoded name.

func GetMediaHandler

func GetMediaHandler() media.Handler

GetMediaHandler returns default media handler.

func GetUid

func GetUid() types.Uid

GetUid generates a unique ID suitable for use as a primary key.

func GetUidString

func GetUidString() string

GetUidString generate unique ID as string

func GetValidator

func GetValidator(name string) validate.Validator

GetValidator returns registered validator by name.

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 InitDb

func InitDb(jsonconf json.RawMessage, reset bool) error

InitDb creates and configures a new database instance. If 'reset' is true it will first attempt to drop an existing database. If jsconf is nil it will assume that the adapter is already open. If it's non-nil and the adapter is not open, it will use the config string to open the adapter first.

func IsOpen

func IsOpen() bool

IsOpen checks if persistent storage connection has been initialized.

func Open

func Open(workerId int, jsonconf json.RawMessage) error

Open initializes the persistence system. Adapter holds a connection pool for a database instance.

	 name - name of the adapter rquested in the config file
  jsonconf - configuration string

func RegisterAdapter

func RegisterAdapter(a adapter.Adapter)

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

func RegisterMediaHandler(name string, mh media.Handler)

RegisterMediaHandler saves reference to a media handler (file upload-download handler).

func RegisterValidator

func RegisterValidator(name string, v validate.Validator)

RegisterValidator registers validation scheme.

func UpgradeDb

func UpgradeDb(jsonconf json.RawMessage) error

UpgradeDb performes an upgrade of the database to the current adapter version. If jsconf is nil it will assume that the adapter is already open. If it's non-nil and the adapter is not open, it will use the config string to open the adapter first.

func UseMediaHandler

func UseMediaHandler(name, config string) error

UseMediaHandler sets specified media handler as default.

Types

type DeviceMapper

type DeviceMapper struct{}

DeviceMapper is a struct to map methods used for handling device IDs, used to generate push notifications.

var Devices DeviceMapper

Devices is an instance of DeviceMapper to map methods to.

func (DeviceMapper) Delete

func (DeviceMapper) Delete(uid types.Uid, deviceID string) error

Delete deletes device record for a given user.

func (DeviceMapper) GetAll

func (DeviceMapper) GetAll(uid ...types.Uid) (map[types.Uid][]types.DeviceDef, int, error)

GetAll returns all known device IDS for a given list of user IDs.

func (DeviceMapper) Update

func (DeviceMapper) Update(uid types.Uid, oldDeviceID string, dev *types.DeviceDef) error

Update updates a device record.

type FileMapper

type FileMapper struct{}

FileMapper is a struct to map methods used for file handling.

var Files FileMapper

Files is an instance of FileMapper to be used for handling file uploads.

func (FileMapper) DeleteUnused

func (FileMapper) DeleteUnused(olderThan time.Time, limit int) error

DeleteUnused removes unused attachments.

func (FileMapper) FinishUpload

func (FileMapper) FinishUpload(fid string, success bool, size int64) (*types.FileDef, error)

FinishUpload marks started upload as successfully finished.

func (FileMapper) Get

func (FileMapper) Get(fid string) (*types.FileDef, error)

Get fetches a file record for a unique file id.

func (FileMapper) StartUpload

func (FileMapper) StartUpload(fd *types.FileDef) error

StartUpload records that the given user initiated a file upload

type MessagesObjMapper

type MessagesObjMapper struct{}

MessagesObjMapper is a struct to hold methods for persistence mapping for the Message object.

var Messages MessagesObjMapper

Messages is an instance of MessagesObjMapper to map methods to.

func (MessagesObjMapper) DeleteList

func (MessagesObjMapper) DeleteList(topic string, delID int, forUser types.Uid, ranges []types.Range) error

DeleteList deletes multiple messages defined by a list of ranges.

func (MessagesObjMapper) GetAll

func (MessagesObjMapper) GetAll(topic string, forUser types.Uid, opt *types.QueryOpt) ([]types.Message, error)

GetAll returns multiple messages.

func (MessagesObjMapper) GetDeleted

func (MessagesObjMapper) GetDeleted(topic string, forUser types.Uid, opt *types.QueryOpt) ([]types.Range, int, error)

GetDeleted returns the ranges of deleted messages and the largest DelId reported in the list.

func (MessagesObjMapper) Save

func (MessagesObjMapper) Save(msg *types.Message, readBySender bool) error

Save message

type SubsObjMapper

type SubsObjMapper struct{}

SubsObjMapper is A struct to hold methods for persistence mapping for the Subscription object.

var Subs SubsObjMapper

Subs is an instance of SubsObjMapper to map methods to.

func (SubsObjMapper) Create

func (SubsObjMapper) Create(subs ...*types.Subscription) error

Create creates multiple subscriptions

func (SubsObjMapper) Delete

func (SubsObjMapper) Delete(topic string, user types.Uid) error

Delete deletes a subscription

func (SubsObjMapper) Get

func (SubsObjMapper) Get(topic string, user types.Uid) (*types.Subscription, error)

Get given subscription

func (SubsObjMapper) Update

func (SubsObjMapper) Update(topic string, user types.Uid, update map[string]interface{}, updateTS bool) error

Update values of topic's subscriptions.

type TopicsObjMapper

type TopicsObjMapper struct{}

TopicsObjMapper is a struct to hold methods for persistence mapping for the topic object.

var Topics TopicsObjMapper

Topics is an instance of TopicsObjMapper to map methods to.

func (TopicsObjMapper) Create

func (TopicsObjMapper) Create(topic *types.Topic, owner types.Uid, private interface{}) error

Create creates a topic and owner's subscription to it.

func (TopicsObjMapper) CreateP2P

func (TopicsObjMapper) CreateP2P(initiator, invited *types.Subscription) error

CreateP2P creates a P2P topic by generating two user's subsciptions to each other.

func (TopicsObjMapper) Delete

func (TopicsObjMapper) Delete(topic string, hard bool) error

Delete deletes topic, messages, attachments, and subscriptions.

func (TopicsObjMapper) Get

func (TopicsObjMapper) Get(topic string) (*types.Topic, error)

Get a single topic with a list of relevant users de-normalized into it

func (TopicsObjMapper) GetSubs

func (TopicsObjMapper) GetSubs(topic string, opts *types.QueryOpt) ([]types.Subscription, error)

GetSubs loads a list of subscriptions to the given topic, user.Public and deleted subscriptions are not loaded. Suspended subscriptions are loaded.

func (TopicsObjMapper) GetSubsAny

func (TopicsObjMapper) GetSubsAny(topic string, opts *types.QueryOpt) ([]types.Subscription, error)

GetSubsAny loads a list of subscriptions to the given topic including deleted subscription. user.Public is not loaded

func (TopicsObjMapper) GetUsers

func (TopicsObjMapper) GetUsers(topic string, opts *types.QueryOpt) ([]types.Subscription, error)

GetUsers loads subscriptions for topic plus loads user.Public. Deleted subscriptions are not loaded.

func (TopicsObjMapper) GetUsersAny

func (TopicsObjMapper) GetUsersAny(topic string, opts *types.QueryOpt) ([]types.Subscription, error)

GetUsersAny loads subscriptions for topic plus loads user.Public. It's the same as GetUsers, except it loads deleted subscriptions too.

func (TopicsObjMapper) OwnerChange

func (TopicsObjMapper) OwnerChange(topic string, newOwner types.Uid) error

OwnerChange replaces the old topic owner with the new owner.

func (TopicsObjMapper) Update

func (TopicsObjMapper) Update(topic string, update map[string]interface{}) error

Update is a generic topic update.

type UsersObjMapper

type UsersObjMapper struct{}

UsersObjMapper is a users struct to hold methods for persistence mapping for the User object.

var Users UsersObjMapper

Users is the ancor for storing/retrieving User objects

func (UsersObjMapper) AddAuthRecord

func (UsersObjMapper) AddAuthRecord(uid types.Uid, authLvl auth.Level, scheme, unique string, secret []byte,
	expires time.Time) error

AddAuthRecord creates a new authentication record for the given user.

func (UsersObjMapper) ConfirmCred

func (UsersObjMapper) ConfirmCred(id types.Uid, method string) error

ConfirmCred marks credential method as confirmed.

func (UsersObjMapper) Create

func (UsersObjMapper) Create(user *types.User, private interface{}) (*types.User, error)

Create inserts User object into a database, updates creation time and assigns UID

func (UsersObjMapper) DelAuthRecords

func (UsersObjMapper) DelAuthRecords(uid types.Uid, scheme string) error

DelAuthRecords deletes user's auth records of the given scheme.

func (UsersObjMapper) DelCred

func (UsersObjMapper) DelCred(id types.Uid, method, value string) error

DelCred deletes user's credentials. If method is "", all credentials are deleted.

func (UsersObjMapper) Delete

func (UsersObjMapper) Delete(id types.Uid, hard bool) error

Delete deletes user records.

func (UsersObjMapper) FailCred

func (UsersObjMapper) FailCred(id types.Uid, method string) error

FailCred increments fail count for the given credential method.

func (UsersObjMapper) FindSubs

func (UsersObjMapper) FindSubs(id types.Uid, required, optional []string) ([]types.Subscription, error)

FindSubs find a list of users and topics for the given tags. Results are formatted as subscriptions.

func (UsersObjMapper) Get

func (UsersObjMapper) Get(uid types.Uid) (*types.User, error)

Get returns a user object for the given user id

func (UsersObjMapper) GetActiveCred

func (UsersObjMapper) GetActiveCred(id types.Uid, method string) (*types.Credential, error)

GetActiveCred gets a the currently active credential for the given user and method.

func (UsersObjMapper) GetAll

func (UsersObjMapper) GetAll(uid ...types.Uid) ([]types.User, error)

GetAll returns a slice of user objects for the given user ids

func (UsersObjMapper) GetAllCreds

func (UsersObjMapper) GetAllCreds(id types.Uid, method string, validatedOnly bool) ([]types.Credential, error)

GetAllCreds returns credentials of the given user, all or validated only.

func (UsersObjMapper) GetAuthRecord

func (UsersObjMapper) GetAuthRecord(user types.Uid, scheme string) (string, auth.Level, []byte, time.Time, error)

GetAuthRecord takes a user ID and a authentication scheme name, fetches unique scheme-dependent identifier and authentication secret.

func (UsersObjMapper) GetAuthUniqueRecord

func (UsersObjMapper) GetAuthUniqueRecord(scheme, unique string) (types.Uid, auth.Level, []byte, time.Time, error)

GetAuthUniqueRecord takes a unique identifier and a authentication scheme name, fetches user ID and authentication secret.

func (UsersObjMapper) GetByCred

func (UsersObjMapper) GetByCred(method, value string) (types.Uid, error)

GetByCred returns user ID for the given validated credential.

func (UsersObjMapper) GetOwnTopics

func (UsersObjMapper) GetOwnTopics(id types.Uid) ([]string, error)

GetOwnTopics retuens a slice of group topic names where the user is the owner.

func (UsersObjMapper) GetSubs

func (UsersObjMapper) GetSubs(id types.Uid, opts *types.QueryOpt) ([]types.Subscription, error)

GetSubs loads a list of subscriptions for the given user. Does not load Public, does not load deleted subscriptions.

func (UsersObjMapper) GetTopics

func (UsersObjMapper) GetTopics(id types.Uid, opts *types.QueryOpt) ([]types.Subscription, error)

GetTopics load a list of user's subscriptions with Public field copied to subscription

func (UsersObjMapper) GetTopicsAny

func (UsersObjMapper) GetTopicsAny(id types.Uid, opts *types.QueryOpt) ([]types.Subscription, error)

GetTopicsAny load a list of user's subscriptions with Public field copied to subscription. Deleted topics are returned too.

func (UsersObjMapper) GetUnreadCount

func (UsersObjMapper) GetUnreadCount(id types.Uid) (int, error)

GetUnreadCount returs user's total count of unread messages in all topics with the R permissions

func (UsersObjMapper) Update

func (UsersObjMapper) Update(uid types.Uid, update map[string]interface{}) error

Update is a generic user data update.

func (UsersObjMapper) UpdateAuthRecord

func (UsersObjMapper) UpdateAuthRecord(uid types.Uid, authLvl auth.Level, scheme, unique string,
	secret []byte, expires time.Time) error

UpdateAuthRecord updates authentication record with a new secret and expiration time.

func (UsersObjMapper) UpdateLastSeen

func (UsersObjMapper) UpdateLastSeen(uid types.Uid, userAgent string, when time.Time) error

UpdateLastSeen updates LastSeen and UserAgent.

func (UsersObjMapper) UpdateState

func (UsersObjMapper) UpdateState(uid types.Uid, state types.ObjState) error

UpdateState changes user's state and state of some topics associated with the user.

func (UsersObjMapper) UpdateTags

func (UsersObjMapper) UpdateTags(uid types.Uid, add, remove, reset []string) ([]string, error)

UpdateTags either adds, removes, or resets tags to the given slices.

func (UsersObjMapper) UpsertCred

func (UsersObjMapper) UpsertCred(cred *types.Credential) (bool, error)

UpsertCred adds or updates a credential validation request. Return true if the record was inserted, false if updated.

Directories

Path Synopsis
Package types provides data types for persisting objects in the databases.
Package types provides data types for persisting objects in the databases.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL