persistence

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Oct 31, 2023 License: Apache-2.0 Imports: 24 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

func RecordID added in v0.4.0

func RecordID(indexID string, vector StrStrMap) (string, error)

RecordID converts a tuple of (index ID, record vector) to index record ID

Types

type Db

type Db interface {
	// NewModelTx creates new ModelTx object
	NewModelTx() ModelTx
	// NewTx creates Tx object
	NewTx() 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"`
	Name      string    `db:"name"`
	Basis     StrStrMap `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      StrStrMap `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          StrStrMap
	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    StrStrMap `db:"vector"`
	CreatedAt time.Time `db:"created_at"`
	UpdatedAt time.Time `db:"updated_at"`
}

type IndexRecordQuery added in v0.4.0

type IndexRecordQuery struct {
	IndexIDs      []string
	Tags          StrStrMap // index tags
	Query         string    // underlying search engine query
	Distinct      bool      // if true, returns at most 1 result per index
	CreatedAfter  time.Time
	CreatedBefore time.Time
	FromID        string
	Limit         int
}

type ModelTx

type ModelTx interface {
	Tx

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

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

	// CreateIndexRecord creates index record entry
	CreateIndexRecord(record IndexRecord) (string, error)
	// GetIndexRecord retrieves index record entry by ID
	GetIndexRecord(ID string) (*IndexRecord, error)
	// UpdateIndexRecord updates index record
	UpdateIndexRecord(record IndexRecord) (*IndexRecord, error)
	// DeleteIndexRecord deletes index record by ID
	DeleteIndexRecord(ID string) error
	// ListIndexRecords lists query matching index record entries
	ListIndexRecords(query IndexRecordQuery) (*QueryResult[*IndexRecord, 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 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 StrStrMap added in v0.4.0

type StrStrMap map[string]string

func (*StrStrMap) Scan added in v0.4.0

func (m *StrStrMap) Scan(value any) error

func (StrStrMap) Value added in v0.4.0

func (m StrStrMap) 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(ctx context.Context)
	// 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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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