db

package
v0.0.0-...-5c6c3bd Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2024 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const SQL_PLACEHOLDER = "$?"

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseModel

type BaseModel = struct{}

types for table data, where colums are mapped as keys and table conversion functions for data read and write

type Handler

type Handler struct {
	Engine  IEngine
	Options KwArgs
	Logger  *xlog.Logger
	Debug   int
}

func NewHandler

func NewHandler(engine IEngine, options KwArgs) *Handler

func (*Handler) InitDatabase

func (dbh *Handler) InitDatabase(tables map[TableName]IModel) error

create database tables and initialize data

func (*Handler) Session

func (dbh *Handler) Session() *Session

create new session from handler

type IEngine

type IEngine interface {
	GetBackendName() string
	FormatSqlStmt(string) string
	Connect(KwArgs) (*sql.DB, error)
	GenTableSchema(TableName, TableMeta) ([]string, error)
	ListRetryErrors() []string
}

backend engine interface

type IModel

type IModel interface {
	GetTableName() TableName
	GetTableMeta() TableMeta
}

models interface

type IModelDataAdapters

type IModelDataAdapters interface {
	GetDataAdapters() ModelDataMappers
}

type IModelDataConverters

type IModelDataConverters interface {
	GetDataConverters() ModelDataMappers
}

type IModelDefaultOrders

type IModelDefaultOrders interface {
	GetDefaultOrders() []string
}

type IModelInitializeData

type IModelInitializeData interface {
	InitializeData(*Session, TableName) error
}

type IModelUpgradeTableSchema

type IModelUpgradeTableSchema interface {
	UpgradeTableSchema(*Session, TableName) error
}

type KwArgs

type KwArgs = map[string]any

generic types

type ModelData

type ModelData = map[string]any

type ModelDataMappers

type ModelDataMappers = map[string](func(any) any)

type Query

type Query struct {
	DBs   *Session
	Model IModel
	// contains filtered or unexported fields
}

func NewQuery

func NewQuery(dbs *Session, model IModel) *Query

func (*Query) All

func (qry *Query) All() ([]ModelData, error)

return all elements matching select query

func (*Query) Columns

func (qry *Query) Columns(columns ...string) *Query

set columns

func (*Query) Count

func (qry *Query) Count() (int64, error)

func (*Query) Delete

func (qry *Query) Delete() (int64, error)

func (*Query) Filter

func (qry *Query) Filter(expr string, params ...any) *Query

add filters

func (*Query) FilterBy

func (qry *Query) FilterBy(column string, value any) *Query

add filters

func (*Query) First

func (qry *Query) First() (ModelData, error)

return first element matching select query

func (*Query) GenerateGuid

func (qry *Query) GenerateGuid() string

func (*Query) Get

func (qry *Query) Get(guid string) (ModelData, error)

get model data defined by guid

func (*Query) GroupBy

func (qry *Query) GroupBy(groupby ...string) *Query

add grouping

func (*Query) Having

func (qry *Query) Having(expr string, val any) *Query

add having expr

func (*Query) Insert

func (qry *Query) Insert(data ModelData) (string, error)

func (*Query) Limit

func (qry *Query) Limit(limit int) *Query

add limit

func (*Query) Offset

func (qry *Query) Offset(offset int) *Query

add offset

func (*Query) One

func (qry *Query) One() (ModelData, error)

return one element matching filter params or nil there must be only one element or none

func (*Query) OrderBy

func (qry *Query) OrderBy(orderby ...string) *Query

add ordering: "colname ASC|DESC"

func (*Query) SqlIdent

func (qry *Query) SqlIdent(name string) string

check valid sql identifier string

func (*Query) Table

func (qry *Query) Table(name TableName) *Query

set runtime table name

func (*Query) Update

func (qry *Query) Update(data ModelData) (int64, error)

type Session

type Session struct {
	DBh *Handler
	// contains filtered or unexported fields
}

func NewSession

func NewSession(dbh *Handler) *Session

func (*Session) Begin

func (sess *Session) Begin() error

func (*Session) Close

func (sess *Session) Close() error

func (*Session) Commit

func (sess *Session) Commit() error

func (*Session) Connect

func (sess *Session) Connect() error

func (*Session) Execute

func (sess *Session) Execute(stmt string, params ...any) error

func (*Session) FetchAll

func (sess *Session) FetchAll(
	stmt string, params ...any) ([]ModelData, error)

func (*Session) InTransaction

func (sess *Session) InTransaction() bool

func (*Session) IsConnected

func (sess *Session) IsConnected() bool

func (*Session) Query

func (sess *Session) Query(model IModel) *Query

create new query for session

func (*Session) RollBack

func (sess *Session) RollBack() error

func (*Session) RowsAffected

func (sess *Session) RowsAffected() int64

type TableColumns

type TableColumns = [][]string

type TableConstraints

type TableConstraints = [][]string

type TableMeta

type TableMeta = struct {
	Options     KwArgs
	Columns     TableColumns
	Constraints TableConstraints
}

type TableName

type TableName = string

types defining table

Directories

Path Synopsis
backends

Jump to

Keyboard shortcuts

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