Help us shape the future of Go! Take the 2026 Go Developer Survey

sqlite

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2026 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package sqlite is the embedded, single-node docstore.Store backed by SQLite (modernc.org/sqlite, pure Go, driver name "sqlite").

Documents live in one table:

docs(site, collection, id, data JSON text, created_at, updated_at,
     created_by, updated_by, version, PRIMARY KEY (site, collection, id))

with timestamps stored as sortable integers (unix nanoseconds, always whole microseconds) and an index on (site, collection, created_at, id) for the default listing order. Filters, ordering and pagination are pushed into SQL using json_extract/json_type so that the type-strict semantics of SPEC §5.2 hold exactly (see query.go).

The database runs in WAL mode. Writes go through a dedicated single connection (SQLite allows one writer at a time; serialising in-process avoids SQLITE_BUSY churn) using BEGIN IMMEDIATE transactions, while reads use a separate read-only pool and proceed concurrently. busy_timeout covers other processes sharing the file.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Store

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

Store is a SQLite-backed document store.

func Open

func Open(ctx context.Context, path string) (*Store, error)

Open opens (creating if needed, with mode 0600) the database file at path and applies migrations. The parent directory must exist. path ":memory:" opens a private in-memory database (one connection; for tests).

func (*Store) Close

func (s *Store) Close() error

Close closes both connection pools.

func (*Store) Collections

func (s *Store) Collections(ctx context.Context, site string) ([]string, error)

Collections lists the non-empty collections of a site, sorted bytewise.

func (*Store) Count

func (s *Store) Count(ctx context.Context, site string) (int64, error)

Count returns the number of documents of a site.

func (*Store) Create

func (s *Store) Create(ctx context.Context, site, collection, id string, data map[string]any, actor string) (*docstore.Doc, error)

Create inserts a new document; see docstore.Store.

func (*Store) Delete

func (s *Store) Delete(ctx context.Context, site, collection, id string) (bool, error)

Delete removes a document; see docstore.Store.

func (*Store) DeleteIf added in v0.2.0

func (s *Store) DeleteIf(ctx context.Context, site, collection, id string, rev docstore.Rev) (bool, error)

DeleteIf removes a document while it is at rev, in one statement; see docstore.Store.

func (*Store) DeleteSite

func (s *Store) DeleteSite(ctx context.Context, site string) error

DeleteSite removes every document of a site.

func (*Store) Get

func (s *Store) Get(ctx context.Context, site, collection, id string) (*docstore.Doc, error)

Get returns a document; see docstore.Store.

func (*Store) Ping

func (s *Store) Ping(ctx context.Context) error

Ping checks that the database answers.

func (*Store) Put

func (s *Store) Put(ctx context.Context, site, collection, id string, data map[string]any, actor string) (*docstore.Doc, error)

Put creates or replaces a document; see docstore.Store.

func (*Store) Query

func (s *Store) Query(ctx context.Context, site, collection string, q docstore.Query) (*docstore.Page, error)

Query returns matching documents; see docstore.Store.

func (*Store) Update

func (s *Store) Update(ctx context.Context, site, collection, id string, patch map[string]any, actor string) (*docstore.Doc, error)

Update shallow-merges patch into an existing document inside one BEGIN IMMEDIATE transaction; see docstore.Store.

func (*Store) UpdateIf added in v0.2.0

func (s *Store) UpdateIf(ctx context.Context, site, collection, id string, rev docstore.Rev, patch map[string]any, actor string) (*docstore.Doc, error)

UpdateIf is Update while the document is at rev, checked in the same transaction; see docstore.Store.

Jump to

Keyboard shortcuts

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