Documentation ¶
Overview ¶
Package mongo implements database interfaces using MongoDB.
Index ¶
- Constants
- Variables
- func NewRegistryBuilder() *bsoncodec.RegistryBuilder
- type Client
- func (c *Client) ActivateClient(ctx context.Context, projectID types.ID, key string) (*database.ClientInfo, error)
- func (c *Client) ChangeUserPassword(ctx context.Context, username, hashedNewPassword string) error
- func (c *Client) Close() error
- func (c *Client) CreateChangeInfos(ctx context.Context, _ types.ID, docInfo *database.DocInfo, ...) error
- func (c *Client) CreateProjectInfo(ctx context.Context, name string, owner types.ID, ...) (*database.ProjectInfo, error)
- func (c *Client) CreateSnapshotInfo(ctx context.Context, docRefKey types.DocRefKey, doc *document.InternalDocument) error
- func (c *Client) CreateUserInfo(ctx context.Context, username string, hashedPassword string) (*database.UserInfo, error)
- func (c *Client) DeactivateClient(ctx context.Context, refKey types.ClientRefKey) (*database.ClientInfo, error)
- func (c *Client) DeleteUserInfoByName(ctx context.Context, username string) error
- func (c *Client) EnsureDefaultUserAndProject(ctx context.Context, username, password string, ...) (*database.UserInfo, *database.ProjectInfo, error)
- func (c *Client) FindChangeInfosBetweenServerSeqs(ctx context.Context, docRefKey types.DocRefKey, from int64, to int64) ([]*database.ChangeInfo, error)
- func (c *Client) FindChangesBetweenServerSeqs(ctx context.Context, docRefKey types.DocRefKey, from int64, to int64) ([]*change.Change, error)
- func (c *Client) FindClientInfoByRefKey(ctx context.Context, refKey types.ClientRefKey) (*database.ClientInfo, error)
- func (c *Client) FindClosestSnapshotInfo(ctx context.Context, docRefKey types.DocRefKey, serverSeq int64, ...) (*database.SnapshotInfo, error)
- func (c *Client) FindDeactivateCandidatesPerProject(ctx context.Context, project *database.ProjectInfo, candidatesLimit int) ([]*database.ClientInfo, error)
- func (c *Client) FindDocInfoByKey(ctx context.Context, projectID types.ID, docKey key.Key) (*database.DocInfo, error)
- func (c *Client) FindDocInfoByKeyAndOwner(ctx context.Context, clientRefKey types.ClientRefKey, docKey key.Key, ...) (*database.DocInfo, error)
- func (c *Client) FindDocInfoByRefKey(ctx context.Context, refKey types.DocRefKey) (*database.DocInfo, error)
- func (c *Client) FindDocInfosByKeys(ctx context.Context, projectID types.ID, docKeys []key.Key) ([]*database.DocInfo, error)
- func (c *Client) FindDocInfosByPaging(ctx context.Context, projectID types.ID, paging types.Paging[types.ID]) ([]*database.DocInfo, error)
- func (c *Client) FindDocInfosByQuery(ctx context.Context, projectID types.ID, query string, pageSize int) (*types.SearchResult[*database.DocInfo], error)
- func (c *Client) FindMinSyncedSeqInfo(ctx context.Context, docRefKey types.DocRefKey) (*database.SyncedSeqInfo, error)
- func (c *Client) FindNextNCyclingProjectInfos(ctx context.Context, pageSize int, lastProjectID types.ID) ([]*database.ProjectInfo, error)
- func (c *Client) FindProjectInfoByID(ctx context.Context, id types.ID) (*database.ProjectInfo, error)
- func (c *Client) FindProjectInfoByName(ctx context.Context, owner types.ID, name string) (*database.ProjectInfo, error)
- func (c *Client) FindProjectInfoByPublicKey(ctx context.Context, publicKey string) (*database.ProjectInfo, error)
- func (c *Client) FindProjectInfoBySecretKey(ctx context.Context, secretKey string) (*database.ProjectInfo, error)
- func (c *Client) FindSnapshotInfoByRefKey(ctx context.Context, refKey types.SnapshotRefKey) (*database.SnapshotInfo, error)
- func (c *Client) FindUserInfoByID(ctx context.Context, clientID types.ID) (*database.UserInfo, error)
- func (c *Client) FindUserInfoByName(ctx context.Context, username string) (*database.UserInfo, error)
- func (c *Client) IsDocumentAttached(ctx context.Context, docRefKey types.DocRefKey, excludeClientID types.ID) (bool, error)
- func (c *Client) ListProjectInfos(ctx context.Context, owner types.ID) ([]*database.ProjectInfo, error)
- func (c *Client) ListUserInfos(ctx context.Context) ([]*database.UserInfo, error)
- func (c *Client) PurgeStaleChanges(ctx context.Context, docRefKey types.DocRefKey) error
- func (c *Client) UpdateAndFindMinSyncedTicket(ctx context.Context, clientInfo *database.ClientInfo, ...) (*time.Ticket, error)
- func (c *Client) UpdateClientInfoAfterPushPull(ctx context.Context, clientInfo *database.ClientInfo, ...) error
- func (c *Client) UpdateDocInfoStatusToRemoved(ctx context.Context, refKey types.DocRefKey) error
- func (c *Client) UpdateProjectInfo(ctx context.Context, owner types.ID, id types.ID, ...) (*database.ProjectInfo, error)
- func (c *Client) UpdateSyncedSeq(ctx context.Context, clientInfo *database.ClientInfo, ...) error
- type Config
Constants ¶
const ( // ColProjects represents the projects collection in the database. ColProjects = "projects" // ColUsers represents the users collection in the database. ColUsers = "users" // ColClients represents the clients collection in the database. ColClients = "clients" // ColDocuments represents the documents collection in the database. ColDocuments = "documents" // ColChanges represents the changes collection in the database. ColChanges = "changes" // ColSnapshots represents the snapshots collection in the database. ColSnapshots = "snapshots" // ColSyncedSeqs represents the syncedseqs collection in the database. ColSyncedSeqs = "syncedseqs" )
const (
// StatusKey is the key of the status field.
StatusKey = "status"
)
Variables ¶
var Collections = []string{ ColProjects, ColUsers, ColClients, ColDocuments, ColChanges, ColSnapshots, ColSyncedSeqs, }
Collections represents the list of all collections in the database.
Functions ¶
func NewRegistryBuilder ¶ added in v0.4.14
func NewRegistryBuilder() *bsoncodec.RegistryBuilder
NewRegistryBuilder returns a new registry builder with the default encoder and decoder.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is a client that connects to Mongo DB and reads or saves Yorkie data.
func (*Client) ActivateClient ¶
func (c *Client) ActivateClient(ctx context.Context, projectID types.ID, key string) (*database.ClientInfo, error)
ActivateClient activates the client of the given key.
func (*Client) ChangeUserPassword ¶ added in v0.4.29
ChangeUserPassword changes to new password for user.
func (*Client) CreateChangeInfos ¶
func (c *Client) CreateChangeInfos( ctx context.Context, _ types.ID, docInfo *database.DocInfo, initialServerSeq int64, changes []*change.Change, isRemoved bool, ) error
CreateChangeInfos stores the given changes and doc info.
func (*Client) CreateProjectInfo ¶
func (c *Client) CreateProjectInfo( ctx context.Context, name string, owner types.ID, clientDeactivateThreshold string, ) (*database.ProjectInfo, error)
CreateProjectInfo creates a new project.
func (*Client) CreateSnapshotInfo ¶
func (c *Client) CreateSnapshotInfo( ctx context.Context, docRefKey types.DocRefKey, doc *document.InternalDocument, ) error
CreateSnapshotInfo stores the snapshot of the given document.
func (*Client) CreateUserInfo ¶ added in v0.2.14
func (c *Client) CreateUserInfo( ctx context.Context, username string, hashedPassword string, ) (*database.UserInfo, error)
CreateUserInfo creates a new user.
func (*Client) DeactivateClient ¶
func (c *Client) DeactivateClient(ctx context.Context, refKey types.ClientRefKey) (*database.ClientInfo, error)
DeactivateClient deactivates the client of the given refKey and updates document statuses as detached.
func (*Client) DeleteUserInfoByName ¶ added in v0.4.29
DeleteUserInfoByName deletes a user by name.
func (*Client) EnsureDefaultUserAndProject ¶ added in v0.2.14
func (c *Client) EnsureDefaultUserAndProject( ctx context.Context, username, password string, clientDeactivateThreshold string, ) (*database.UserInfo, *database.ProjectInfo, error)
EnsureDefaultUserAndProject creates the default user and project if they do not exist.
func (*Client) FindChangeInfosBetweenServerSeqs ¶
func (c *Client) FindChangeInfosBetweenServerSeqs( ctx context.Context, docRefKey types.DocRefKey, from int64, to int64, ) ([]*database.ChangeInfo, error)
FindChangeInfosBetweenServerSeqs returns the changeInfos between two server sequences.
func (*Client) FindChangesBetweenServerSeqs ¶
func (c *Client) FindChangesBetweenServerSeqs( ctx context.Context, docRefKey types.DocRefKey, from int64, to int64, ) ([]*change.Change, error)
FindChangesBetweenServerSeqs returns the changes between two server sequences.
func (*Client) FindClientInfoByRefKey ¶ added in v0.4.14
func (c *Client) FindClientInfoByRefKey(ctx context.Context, refKey types.ClientRefKey) (*database.ClientInfo, error)
FindClientInfoByRefKey finds the client of the given refKey.
func (*Client) FindClosestSnapshotInfo ¶
func (c *Client) FindClosestSnapshotInfo( ctx context.Context, docRefKey types.DocRefKey, serverSeq int64, includeSnapshot bool, ) (*database.SnapshotInfo, error)
FindClosestSnapshotInfo finds the last snapshot of the given document.
func (*Client) FindDeactivateCandidatesPerProject ¶ added in v0.4.13
func (c *Client) FindDeactivateCandidatesPerProject( ctx context.Context, project *database.ProjectInfo, candidatesLimit int, ) ([]*database.ClientInfo, error)
FindDeactivateCandidatesPerProject finds the clients that need housekeeping per project.
func (*Client) FindDocInfoByKey ¶
func (c *Client) FindDocInfoByKey( ctx context.Context, projectID types.ID, docKey key.Key, ) (*database.DocInfo, error)
FindDocInfoByKey finds the document of the given key.
func (*Client) FindDocInfoByKeyAndOwner ¶ added in v0.2.9
func (c *Client) FindDocInfoByKeyAndOwner( ctx context.Context, clientRefKey types.ClientRefKey, docKey key.Key, createDocIfNotExist bool, ) (*database.DocInfo, error)
FindDocInfoByKeyAndOwner finds the document of the given key. If the createDocIfNotExist condition is true, create the document if it does not exist.
func (*Client) FindDocInfoByRefKey ¶ added in v0.4.14
func (c *Client) FindDocInfoByRefKey( ctx context.Context, refKey types.DocRefKey, ) (*database.DocInfo, error)
FindDocInfoByRefKey finds a docInfo of the given refKey.
func (*Client) FindDocInfosByKeys ¶ added in v0.4.28
func (c *Client) FindDocInfosByKeys( ctx context.Context, projectID types.ID, docKeys []key.Key, ) ([]*database.DocInfo, error)
FindDocInfosByKeys finds the documents of the given keys.
func (*Client) FindDocInfosByPaging ¶
func (c *Client) FindDocInfosByPaging( ctx context.Context, projectID types.ID, paging types.Paging[types.ID], ) ([]*database.DocInfo, error)
FindDocInfosByPaging returns the docInfos of the given paging.
func (*Client) FindDocInfosByQuery ¶ added in v0.2.13
func (c *Client) FindDocInfosByQuery( ctx context.Context, projectID types.ID, query string, pageSize int, ) (*types.SearchResult[*database.DocInfo], error)
FindDocInfosByQuery returns the docInfos which match the given query.
func (*Client) FindMinSyncedSeqInfo ¶ added in v0.2.17
func (c *Client) FindMinSyncedSeqInfo( ctx context.Context, docRefKey types.DocRefKey, ) (*database.SyncedSeqInfo, error)
FindMinSyncedSeqInfo finds the minimum synced sequence info.
func (*Client) FindNextNCyclingProjectInfos ¶ added in v0.4.13
func (c *Client) FindNextNCyclingProjectInfos( ctx context.Context, pageSize int, lastProjectID types.ID, ) ([]*database.ProjectInfo, error)
FindNextNCyclingProjectInfos finds the next N cycling projects from the given projectID.
func (*Client) FindProjectInfoByID ¶ added in v0.2.8
func (c *Client) FindProjectInfoByID(ctx context.Context, id types.ID) (*database.ProjectInfo, error)
FindProjectInfoByID returns a project by the given id.
func (*Client) FindProjectInfoByName ¶ added in v0.2.6
func (c *Client) FindProjectInfoByName( ctx context.Context, owner types.ID, name string, ) (*database.ProjectInfo, error)
FindProjectInfoByName returns a project by name.
func (*Client) FindProjectInfoByPublicKey ¶
func (c *Client) FindProjectInfoByPublicKey(ctx context.Context, publicKey string) (*database.ProjectInfo, error)
FindProjectInfoByPublicKey returns a project by public key.
func (*Client) FindProjectInfoBySecretKey ¶ added in v0.4.13
func (c *Client) FindProjectInfoBySecretKey(ctx context.Context, secretKey string) (*database.ProjectInfo, error)
FindProjectInfoBySecretKey returns a project by secret key.
func (*Client) FindSnapshotInfoByRefKey ¶ added in v0.4.14
func (c *Client) FindSnapshotInfoByRefKey( ctx context.Context, refKey types.SnapshotRefKey, ) (*database.SnapshotInfo, error)
FindSnapshotInfoByRefKey returns the snapshot by the given refKey.
func (*Client) FindUserInfoByID ¶ added in v0.4.13
func (c *Client) FindUserInfoByID(ctx context.Context, clientID types.ID) (*database.UserInfo, error)
FindUserInfoByID returns a user by ID.
func (*Client) FindUserInfoByName ¶ added in v0.4.14
func (c *Client) FindUserInfoByName(ctx context.Context, username string) (*database.UserInfo, error)
FindUserInfoByName returns a user by username.
func (*Client) IsDocumentAttached ¶ added in v0.4.3
func (c *Client) IsDocumentAttached( ctx context.Context, docRefKey types.DocRefKey, excludeClientID types.ID, ) (bool, error)
IsDocumentAttached returns whether the given document is attached to clients.
func (*Client) ListProjectInfos ¶
func (c *Client) ListProjectInfos( ctx context.Context, owner types.ID, ) ([]*database.ProjectInfo, error)
ListProjectInfos returns all project infos owned by owner.
func (*Client) ListUserInfos ¶ added in v0.2.14
ListUserInfos returns all users.
func (*Client) PurgeStaleChanges ¶ added in v0.2.17
PurgeStaleChanges delete changes before the smallest in `syncedseqs` to save storage.
func (*Client) UpdateAndFindMinSyncedTicket ¶
func (c *Client) UpdateAndFindMinSyncedTicket( ctx context.Context, clientInfo *database.ClientInfo, docRefKey types.DocRefKey, serverSeq int64, ) (*time.Ticket, error)
UpdateAndFindMinSyncedTicket updates the given serverSeq of the given client and returns the min synced ticket.
func (*Client) UpdateClientInfoAfterPushPull ¶
func (c *Client) UpdateClientInfoAfterPushPull( ctx context.Context, clientInfo *database.ClientInfo, docInfo *database.DocInfo, ) error
UpdateClientInfoAfterPushPull updates the client from the given clientInfo after handling PushPull.
func (*Client) UpdateDocInfoStatusToRemoved ¶ added in v0.4.0
UpdateDocInfoStatusToRemoved updates the document status to removed.
func (*Client) UpdateProjectInfo ¶
func (c *Client) UpdateProjectInfo( ctx context.Context, owner types.ID, id types.ID, fields *types.UpdatableProjectFields, ) (*database.ProjectInfo, error)
UpdateProjectInfo updates the project info.
type Config ¶
type Config struct { ConnectionTimeout string `yaml:"ConnectionTimeout"` ConnectionURI string `yaml:"ConnectionURI"` YorkieDatabase string `yaml:"YorkieDatabase"` PingTimeout string `yaml:"PingTimeout"` }
Config is the configuration for creating a Client instance.
func (*Config) ParseConnectionTimeout ¶
ParseConnectionTimeout returns connection timeout duration.
func (*Config) ParsePingTimeout ¶
ParsePingTimeout returns ping timeout duration.