memory

package
v0.4.6 Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2023 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package memory implements the database interface using in-memory database.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DB

type DB struct {
	// contains filtered or unexported fields
}

DB is an in-memory database for testing or temporarily.

func New

func New() (*DB, error)

New returns a new in-memory database.

func (*DB) ActivateClient

func (d *DB) ActivateClient(
	ctx context.Context,
	projectID types.ID,
	key string,
) (*database.ClientInfo, error)

ActivateClient activates a client.

func (*DB) Close

func (d *DB) Close() error

Close closes the database.

func (*DB) CreateChangeInfos

func (d *DB) CreateChangeInfos(
	ctx context.Context,
	projectID types.ID,
	docInfo *database.DocInfo,
	initialServerSeq int64,
	changes []*change.Change,
	isRemoved bool,
) error

CreateChangeInfos stores the given changes and doc info. If the removeDoc condition is true, mark IsRemoved to true in doc info.

func (*DB) CreateProjectInfo

func (d *DB) CreateProjectInfo(
	ctx context.Context,
	name string,
	owner types.ID,
	clientDeactivateThreshold string,
) (*database.ProjectInfo, error)

CreateProjectInfo creates a new project.

func (*DB) CreateSnapshotInfo

func (d *DB) CreateSnapshotInfo(
	ctx context.Context,
	docID types.ID,
	doc *document.InternalDocument,
) error

CreateSnapshotInfo stores the snapshot of the given document.

func (*DB) CreateUserInfo added in v0.2.14

func (d *DB) CreateUserInfo(
	ctx context.Context,
	username string,
	hashedPassword string,
) (*database.UserInfo, error)

CreateUserInfo creates a new user.

func (*DB) DeactivateClient

func (d *DB) DeactivateClient(ctx context.Context, projectID, clientID types.ID) (*database.ClientInfo, error)

DeactivateClient deactivates a client.

func (*DB) EnsureDefaultUserAndProject added in v0.2.14

func (d *DB) 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 (*DB) FindChangeInfosBetweenServerSeqs

func (d *DB) FindChangeInfosBetweenServerSeqs(
	ctx context.Context,
	docID types.ID,
	from int64,
	to int64,
) ([]*database.ChangeInfo, error)

FindChangeInfosBetweenServerSeqs returns the changeInfos between two server sequences.

func (*DB) FindChangesBetweenServerSeqs

func (d *DB) FindChangesBetweenServerSeqs(
	ctx context.Context,
	docID types.ID,
	from int64,
	to int64,
) ([]*change.Change, error)

FindChangesBetweenServerSeqs returns the changes between two server sequences.

func (*DB) FindClientInfoByID

func (d *DB) FindClientInfoByID(ctx context.Context, projectID, clientID types.ID) (*database.ClientInfo, error)

FindClientInfoByID finds a client by ID.

func (*DB) FindClosestSnapshotInfo

func (d *DB) FindClosestSnapshotInfo(
	ctx context.Context,
	docID types.ID,
	serverSeq int64,
	includeSnapshot bool,
) (*database.SnapshotInfo, error)

FindClosestSnapshotInfo finds the last snapshot of the given document.

func (*DB) FindDeactivateCandidates

func (d *DB) FindDeactivateCandidates(
	ctx context.Context,
	candidatesLimitPerProject int,
	projectFetchSize int,
	lastProjectID types.ID,
) (types.ID, []*database.ClientInfo, error)

FindDeactivateCandidates finds the clients that need housekeeping.

func (*DB) FindDocInfoByID

func (d *DB) FindDocInfoByID(
	ctx context.Context,
	projectID types.ID,
	id types.ID,
) (*database.DocInfo, error)

FindDocInfoByID finds a docInfo of the given ID.

func (*DB) FindDocInfoByKey

func (d *DB) FindDocInfoByKey(
	ctx context.Context,
	projectID types.ID,
	key key.Key,
) (*database.DocInfo, error)

FindDocInfoByKey finds the document of the given key.

func (*DB) FindDocInfoByKeyAndOwner added in v0.2.9

func (d *DB) FindDocInfoByKeyAndOwner(
	ctx context.Context,
	projectID types.ID,
	clientID types.ID,
	key 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 (*DB) FindDocInfosByPaging

func (d *DB) FindDocInfosByPaging(
	ctx context.Context,
	projectID types.ID,
	paging types.Paging[types.ID],
) ([]*database.DocInfo, error)

FindDocInfosByPaging returns the documentInfos of the given paging.

func (*DB) FindDocInfosByQuery added in v0.2.13

func (d *DB) 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 (*DB) FindMinSyncedSeqInfo added in v0.2.17

func (d *DB) FindMinSyncedSeqInfo(
	ctx context.Context,
	docID types.ID,
) (*database.SyncedSeqInfo, error)

FindMinSyncedSeqInfo finds the minimum synced sequence info.

func (*DB) FindProjectInfoByID added in v0.2.8

func (d *DB) FindProjectInfoByID(ctx context.Context, id types.ID) (*database.ProjectInfo, error)

FindProjectInfoByID returns a project by the given id.

func (*DB) FindProjectInfoByName added in v0.2.6

func (d *DB) FindProjectInfoByName(
	ctx context.Context,
	owner types.ID,
	name string,
) (*database.ProjectInfo, error)

FindProjectInfoByName returns a project by the given name.

func (*DB) FindProjectInfoByPublicKey

func (d *DB) FindProjectInfoByPublicKey(
	ctx context.Context,
	publicKey string,
) (*database.ProjectInfo, error)

FindProjectInfoByPublicKey returns a project by public key.

func (*DB) FindSnapshotInfoByID added in v0.4.6

func (d *DB) FindSnapshotInfoByID(ctx context.Context, id types.ID) (*database.SnapshotInfo, error)

FindSnapshotInfoByID returns the snapshot by the given id.

func (*DB) FindUserInfo added in v0.2.14

func (d *DB) FindUserInfo(ctx context.Context, username string) (*database.UserInfo, error)

FindUserInfo finds a user by the given username.

func (*DB) IsDocumentAttached added in v0.4.3

func (d *DB) IsDocumentAttached(
	ctx context.Context,
	projectID types.ID,
	docID types.ID,
	excludeClientID types.ID,
) (bool, error)

IsDocumentAttached returns whether the document is attached to clients.

func (*DB) ListProjectInfos

func (d *DB) ListProjectInfos(
	ctx context.Context,
	owner types.ID,
) ([]*database.ProjectInfo, error)

ListProjectInfos returns all project infos owned by owner.

func (*DB) ListUserInfos added in v0.2.14

func (d *DB) ListUserInfos(
	ctx context.Context,
) ([]*database.UserInfo, error)

ListUserInfos returns all users.

func (*DB) PurgeStaleChanges added in v0.2.17

func (d *DB) PurgeStaleChanges(
	ctx context.Context,
	docID types.ID,
) error

PurgeStaleChanges delete changes before the smallest in `syncedseqs` to save storage.

func (*DB) UpdateAndFindMinSyncedTicket

func (d *DB) UpdateAndFindMinSyncedTicket(
	ctx context.Context,
	clientInfo *database.ClientInfo,
	docID types.ID,
	serverSeq int64,
) (*time.Ticket, error)

UpdateAndFindMinSyncedTicket updates the given serverSeq of the given client and returns the min synced ticket.

func (*DB) UpdateClientInfoAfterPushPull

func (d *DB) UpdateClientInfoAfterPushPull(
	ctx context.Context,
	clientInfo *database.ClientInfo,
	docInfo *database.DocInfo,
) error

UpdateClientInfoAfterPushPull updates the client from the given clientInfo after handling PushPull.

func (*DB) UpdateDocInfoStatusToRemoved added in v0.4.0

func (d *DB) UpdateDocInfoStatusToRemoved(
	ctx context.Context,
	projectID types.ID,
	id types.ID,
) error

UpdateDocInfoStatusToRemoved updates the status of the document to removed.

func (*DB) UpdateProjectInfo

func (d *DB) UpdateProjectInfo(
	ctx context.Context,
	owner types.ID,
	id types.ID,
	fields *types.UpdatableProjectFields,
) (*database.ProjectInfo, error)

UpdateProjectInfo updates the given project.

func (*DB) UpdateSyncedSeq

func (d *DB) UpdateSyncedSeq(
	ctx context.Context,
	clientInfo *database.ClientInfo,
	docID types.ID,
	serverSeq int64,
) error

UpdateSyncedSeq updates the syncedSeq of the given client.

Jump to

Keyboard shortcuts

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