persistence

package
v0.35.0 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2023 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PqForeignKeyViolationError = pq.ErrorCode("23503")
	PqUniqueViolationError     = pq.ErrorCode("23505")
)

Variables

This section is empty.

Functions

func NewMigration

func NewMigration(driverName, dataSourceName string) *migration

Types

type Basis added in v0.5.0

type Basis json.RawMessage

type Db

type Db interface {
	// NewModelTx creates new ModelTx object
	NewModelTx(ctx context.Context) ModelTx
	// NewTx creates Tx object
	NewTx(ctx context.Context) Tx
}

Db interface exposes

func NewDb

func NewDb(driverName, dataSourceName string) Db

NewDb creates new db object

type Format added in v0.4.0

type Format struct {
	ID        string    `db:"id"`
	Basis     Basis     `db:"basis"`
	CreatedAt time.Time `db:"created_at"`
	UpdatedAt time.Time `db:"updated_at"`
}

type Index added in v0.0.2

type Index struct {
	ID        string    `db:"id"`
	Format    string    `db:"format"`
	Tags      Tags      `db:"tags"`
	CreatedAt time.Time `db:"created_at"`
	UpdatedAt time.Time `db:"updated_at"`
}

type IndexQuery added in v0.4.0

type IndexQuery struct {
	Format        string
	Tags          Tags
	CreatedAfter  time.Time
	CreatedBefore time.Time
	FromID        string
	Limit         int
}

type IndexRecord added in v0.0.2

type IndexRecord struct {
	ID        string    `db:"id"`
	IndexID   string    `db:"index_id"`
	Segment   string    `db:"segment"`
	Vector    Vector    `db:"vector"`
	CreatedAt time.Time `db:"created_at"`
	UpdatedAt time.Time `db:"updated_at"`
}

type IndexRecordID added in v0.11.0

type IndexRecordID struct {
	IndexID  string `json:"index_id"`
	RecordID string `json:"record_id"`
}

func (*IndexRecordID) Decode added in v0.11.0

func (id *IndexRecordID) Decode(s string) error

func (IndexRecordID) Encode added in v0.11.0

func (id IndexRecordID) Encode() string

type IndexRecordQuery added in v0.4.0

type IndexRecordQuery struct {
	IndexIDs      []string
	CreatedAfter  time.Time
	CreatedBefore time.Time
	FromID        string
	Limit         int
}

type ModelTx

type ModelTx interface {
	Tx

	// CreateFormat creates format entry
	CreateFormat(format Format) (Format, error)
	// GetFormat retrieves format entry by ID
	GetFormat(ID string) (Format, error)
	// DeleteFormat deletes format entry by ID (only if not referenced)
	DeleteFormat(ID string) error
	// ListFormats lists all the existing format entries
	ListFormats() ([]Format, error)

	// CreateIndex creates index entry based on source ID
	CreateIndex(index Index) (Index, error)
	// GetIndex retrieves index info by ID
	GetIndex(ID string) (Index, error)
	// UpdateIndex updates index info
	UpdateIndex(index Index) error
	// DeleteIndex deletes index entry and all the related records
	DeleteIndex(ID string) error
	// QueryIndexes lists query matching index entries
	QueryIndexes(query IndexQuery) (QueryResult[Index, string], error)

	// UpsertIndexRecords creates or updates index record entries
	UpsertIndexRecords(records ...IndexRecord) error
	// GetIndexRecord retrieves index record entry
	GetIndexRecord(ID, indexID string) (IndexRecord, error)
	// UpdateIndexRecord updates index record
	UpdateIndexRecord(record IndexRecord) error
	// DeleteIndexRecords deletes index record entries
	DeleteIndexRecords(records ...IndexRecord) (int, error)
	// QueryIndexRecords lists query matching index record entries
	QueryIndexRecords(query IndexRecordQuery) (QueryResult[IndexRecord, string], error)

	// Search performs full text search across existing index records
	// the query string should be formed in accordance with the groonga manual
	// for the `&@~` operator, useful links:
	// - https://pgroonga.github.io/reference/operators/query-v2.html
	// - https://groonga.org/docs/reference/grn_expr/query_syntax.html
	Search(query SearchQuery) (QueryResult[SearchQueryResultItem, string], error)
}

ModelTx provides a transaction with some methods for accessing to the Model objects

type QueryResult

type QueryResult[T any, N any] struct {
	Items  []T
	NextID N
	Total  int64
}

type SearchQuery added in v0.7.0

type SearchQuery struct {
	IndexIDs     []string
	Query        string // underlying search engine query
	Tags         Tags   // index tags
	Distinct     bool   // if true, returns at most 1 result per index
	OrderByScore bool   // if true, sorts the result by the result relevancy score
	FromID       string
	Offset       int
	Limit        int
}

type SearchQueryResultItem added in v0.7.0

type SearchQueryResultItem struct {
	IndexRecord
	Score int
}

type SqlTestSuite

type SqlTestSuite struct {
	Dir string
	suite.Suite
	// contains filtered or unexported fields
}

SqlTestSuite struct used to wrap all related database connection stuff into one suite

func (*SqlTestSuite) AfterTest

func (s *SqlTestSuite) AfterTest(suiteName, testName string)

func (*SqlTestSuite) BeforeTest

func (s *SqlTestSuite) BeforeTest(suiteName, testName string)

func (*SqlTestSuite) GetDb

func (s *SqlTestSuite) GetDb() Db

func (*SqlTestSuite) SetupSuite

func (s *SqlTestSuite) SetupSuite()

func (*SqlTestSuite) TearDownSuite

func (s *SqlTestSuite) TearDownSuite()

type Tags added in v0.5.0

type Tags map[string]string

func (*Tags) Scan added in v0.5.0

func (t *Tags) Scan(value any) error

func (Tags) Value added in v0.5.0

func (t Tags) Value() (value driver.Value, err error)

type Tx

type Tx interface {
	// MustBegin starts the transaction
	MustBegin()
	// MustBeginSerializable starts new transaction with Serializable isolation level
	MustBeginSerializable()
	// Commit commits the changes made within the transaction
	Commit() error
	// Rollback rolls the transaction back
	Rollback() error
	// ExecScript allows to execute the sql statements from the file provided
	ExecScript(sqlScript string) error
}

Tx interface describes an abstract DB transaction.

type Vector added in v0.5.0

type Vector json.RawMessage

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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