database

package
v0.0.10 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2023 License: MIT Imports: 10 Imported by: 1

Documentation

Index

Constants

View Source
const (
	AscendingSortOrderKeyword  = "ASC"
	DescendingSortOrderKeyword = "DESC"
)
View Source
const MaxElementsOfGoroutine = 5000

Variables

This section is empty.

Functions

func CopyWithNewKey

func CopyWithNewKey[R Record](r R, k entity.AutoGenKey) R

func MultiplePlaceholder added in v0.0.3

func MultiplePlaceholder(lv int) string

func Values

func Values(r Record) []any

Types

type AnonymousErrorCallback added in v0.0.2

type AnonymousErrorCallback func() (any, error)

type DatabaseContext

type DatabaseContext[R Record] struct {
	DB       *sql.DB
	FilePath string
}

func Convert added in v0.0.2

func Convert[R Record, T Record](ctx DatabaseContext[R]) DatabaseContext[T]

func NewDatabaseContext

func NewDatabaseContext[R Record](fp string) (DatabaseContext[R], error)

func (DatabaseContext[R]) CustomQuery added in v0.0.2

func (ctx DatabaseContext[R]) CustomQuery(q string, mp TypedQueryResultMapper[R], v ...any) ([]R, error)

Execute a query that can be customized using prepared statements. Consumers must provide a typed callback that shall return each row result mapped as a pointer to a struct.

An example of a call would be:

ctx.CustomQuery("SELECT * FROM User WHERE email = ?", func() (*User, []any) {
		u := User{}
		return u, []any{&u.UserId, &u.Email}
	}, email)

func (DatabaseContext[Record]) Insert

func (ctx DatabaseContext[Record]) Insert(i Import) (AutoGenKey, error)

func (DatabaseContext[Record]) InsertSubscription added in v0.0.5

func (ctx DatabaseContext[Record]) InsertSubscription(s Subscription) error

func (DatabaseContext[R]) NewTransactionContext added in v0.0.2

func (ctx DatabaseContext[R]) NewTransactionContext() (TransactionContext[R], error)

type DatabaseTable

type DatabaseTable[R Record] struct {
	Table[R]
	Records[R]
}

func (DatabaseTable[R]) Fields

func (t DatabaseTable[R]) Fields() []Field

func (DatabaseTable[R]) Name

func (t DatabaseTable[R]) Name() string

type Field

type Field string

func Fields

func Fields(r Record) []Field

type ForeignTable

type ForeignTable[R Record] DatabaseTable[R]

func NewConcurrentHashForeignTable added in v0.0.9

func NewConcurrentHashForeignTable[F HashUser, P User](maxElementsOfGoroutine int, primaryElements []P, newForeignTableCallback func([]P) ForeignTable[F]) ForeignTable[F]

func NewHashUserTable

func NewHashUserTable(us []User) ForeignTable[HashUser]

func NewLeakBadActorTable

func NewLeakBadActorTable(lba map[Leak][]BadActor) ForeignTable[LeakBadActor]

func NewLeakPlatformTable

func NewLeakPlatformTable(lpt map[Leak][]Platform) ForeignTable[LeakPlatform]

func NewLeakUserTable

func NewLeakUserTable(lus map[Leak][]User) ForeignTable[LeakUser]

func NewSubscriberAffectedTable added in v0.0.5

func NewSubscriberAffectedTable(s Subscriber, a []Affected) ForeignTable[SubscriberAffected]

func (ForeignTable[R]) Copy

func (ft ForeignTable[R]) Copy(rs Records[R]) ForeignTable[R]

func (ForeignTable[R]) Fields

func (ft ForeignTable[R]) Fields() []Field

func (ForeignTable[R]) InsertFields

func (ft ForeignTable[R]) InsertFields() []Field

func (ForeignTable[R]) InsertValues

func (ft ForeignTable[R]) InsertValues(r R) []any

func (ForeignTable[R]) Name

func (ft ForeignTable[R]) Name() string

func (ForeignTable[R]) PrepareInsertStatement

func (ft ForeignTable[R]) PrepareInsertStatement(tx *sql.Tx) (*sql.Stmt, error)

type PrimaryTable

type PrimaryTable[R Record] DatabaseTable[R]

func NewAffectedTable added in v0.0.5

func NewAffectedTable(af []Affected) PrimaryTable[Affected]

func NewBadActorTable

func NewBadActorTable(ba []BadActor) PrimaryTable[BadActor]

func NewConcurrentPrimaryTable added in v0.0.9

func NewConcurrentPrimaryTable[P BadActor | User | Platform](maxElementsOfGoroutine int, primaryElements []P, newPrimaryTableCallback func([]P) PrimaryTable[P]) PrimaryTable[P]

func NewLeakTable

func NewLeakTable(ls ...Leak) PrimaryTable[Leak]

func NewPlatformTable

func NewPlatformTable(ps []Platform) PrimaryTable[Platform]

func NewSubscriberTable added in v0.0.5

func NewSubscriberTable(su ...Subscriber) PrimaryTable[Subscriber]

func NewUserTable

func NewUserTable(us []User) PrimaryTable[User]

func (PrimaryTable[R]) Copy

func (pt PrimaryTable[R]) Copy(rs Records[R]) PrimaryTable[R]

func (PrimaryTable[R]) Fields

func (pt PrimaryTable[R]) Fields() []Field

func (PrimaryTable[R]) FindFields

func (pt PrimaryTable[R]) FindFields() []Field

func (PrimaryTable[R]) FindValues

func (pt PrimaryTable[R]) FindValues(r R) []any

func (PrimaryTable[R]) HasPrimaryKeySet

func (pt PrimaryTable[R]) HasPrimaryKeySet(r R) bool

func (PrimaryTable[R]) InsertFields

func (pt PrimaryTable[R]) InsertFields() []Field

func (PrimaryTable[R]) InsertValues

func (pt PrimaryTable[R]) InsertValues(r R) []any

func (PrimaryTable[R]) Name

func (pt PrimaryTable[R]) Name() string

func (PrimaryTable[R]) PrepareFindStatement

func (pt PrimaryTable[R]) PrepareFindStatement(tx *sql.Tx) (*sql.Stmt, error)

func (PrimaryTable[R]) PrepareInsertStatement

func (pt PrimaryTable[R]) PrepareInsertStatement(tx *sql.Tx) (*sql.Stmt, error)

func (PrimaryTable[R]) Values

func (pt PrimaryTable[R]) Values(r R) []any

type Record

type Record interface{}

type Records

type Records[R Record] []R

type Table

type Table[R Record] interface {
	Name() string
	Records() []R
	Fields() []Field
	Values(R) []any
	Copy([]R) DatabaseTable[R]
	Generalize() DatabaseTable[Record]
	HasPrimaryKeySet(R) bool
	InsertFields() []Field
	InsertValues(R) []any
	FindFields() []Field
	FindValues(R) []any
	PrepareInsertStatement(*sql.Tx) (*sql.Stmt, error)
	PrepareFindStatement(*sql.Tx) (*sql.Stmt, error)
}

type TransactionContext

type TransactionContext[R Record] struct {
	Tx *sql.Tx
}

type TypedQueryResultMapper added in v0.0.2

type TypedQueryResultMapper[R Record] func() (*R, []any)

Jump to

Keyboard shortcuts

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