sqlctrl

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2024 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrorTableFieldMustHaveATable    = fmt.Errorf("table: field must have a table")
	ErrorTableReferenceIsNil         = fmt.Errorf("table: reference is nil")
	ErrorTableReferenceIsUnsupported = fmt.Errorf("table: reference is unsupported")
	ErrorTableReferenceIsUncorrected = fmt.Errorf("table: reference is uncorrected")
)
View Source
var (
	ErrorBuilderMustHaveATable                = fmt.Errorf("builder: must have a table")
	ErrorBuilderMustHaveATableWithName        = fmt.Errorf("builder: must have a table with name")
	ErroroBuilderTableHasUnsupportedReferense = fmt.Errorf("builder: table has is unsupported reference")
)
View Source
var (
	ErrorGenericInvalidArgument = fmt.Errorf("generic: invalid argument")

	ErrorTableIsNil                 = fmt.Errorf("table: is nil")
	ErrorTableMustHaveAutoincrement = fmt.Errorf("table: must have AUTO_INCREMENT")

	ErrorBuilderIsNil           = fmt.Errorf("builder: is nil")
	ErrorBuilderWithoutResponse = fmt.Errorf("builder: without response")

	ErrorResponseLessThanRequested = fmt.Errorf("response: less than requested")
	ErrorResponseMoreThanRequested = fmt.Errorf("response: less than requested")

	ErrorDatabaseIsNil                 = fmt.Errorf("database: is nil")
	ErrorDatabaseIsAlreadyHasTransport = fmt.Errorf("database: is already has transpport")

	ErrorTransportIsNil            = fmt.Errorf("transport: is nil")
	ErrorTransportIsAlreadyOpened  = fmt.Errorf("transport: is already opened")
	ErrorTransportIsAlreadyClosed  = fmt.Errorf("transport: is already closed")
	ErrorTransportMustHaveDatabase = fmt.Errorf("transport: must have database")

	ErrorTransactionIsAlreadyOpened = fmt.Errorf("transaction: is already opened")
	ErrorTransactionIsAlreadyClosed = fmt.Errorf("transaction: is already closed")

	ErrorSchemeIsNil            = fmt.Errorf("scheme: is nil")
	ErrorSchemeMustHaveTable    = fmt.Errorf("scheme: must have table")
	ErrorSchemeMustHaveDatabase = fmt.Errorf("scheme: must have database")

	ErrorSchemeTransactionIsAlreadyOpened = fmt.Errorf("scheme: transaction is already opened")
	ErrorSchemeTransactionIsAlreadyClosed = fmt.Errorf("scheme: transaction is already closed")
	ErrorSchemeTransactionHasUnknownState = fmt.Errorf("scheme: transaction has unknown state")

	ErrorSchemeHasUnsupportedStruct        = fmt.Errorf("scheme: has unsupported struct")
	ErrorSchemeHasUnsupportedHeader        = fmt.Errorf("scheme: has unsupported header")
	ErrorSchemeMigrationIsLimitedByVersion = fmt.Errorf("scheme: migration is limited by version")
)
View Source
var (
	TransactionInsertBlock  int64 = 10
	TransactionReplaceBlock int64 = 10
)

Functions

func SqlFieldValueToString

func SqlFieldValueToString(goType reflect.Kind, reflectValue reflect.Value) (valueString string, err error)

Types

type Builder

type Builder interface {
	Build() (string, []interface{}, error)
}

type BuilderCreate

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

func NewBuilderCreate

func NewBuilderCreate(createTable *Table) *BuilderCreate

func (*BuilderCreate) Build

func (builder *BuilderCreate) Build() (result string, option []interface{}, err error)

func (*BuilderCreate) Create

func (builder *BuilderCreate) Create(createTable *Table) *BuilderCreate

func (*BuilderCreate) CreateName

func (builder *BuilderCreate) CreateName(createName string) *BuilderCreate

func (*BuilderCreate) IfNotExists

func (builder *BuilderCreate) IfNotExists(value bool) *BuilderCreate

func (*BuilderCreate) SetDialect

func (builder *BuilderCreate) SetDialect(sqlDialect string)

type BuilderDelete

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

func NewBuilderDelete

func NewBuilderDelete(deleteTable *Table) *BuilderDelete

func (*BuilderDelete) Build

func (builder *BuilderDelete) Build() (result string, option []interface{}, err error)

func (*BuilderDelete) Delete

func (builder *BuilderDelete) Delete(deleteTable *Table) *BuilderDelete

func (*BuilderDelete) SqlDialect

func (builder *BuilderDelete) SqlDialect(sqlDialect string) *BuilderDelete

func (*BuilderDelete) Where

func (builder *BuilderDelete) Where(whereStringArray ...string) *BuilderDelete

type BuilderInsert

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

func NewBuilderInsert

func NewBuilderInsert(insertTable *Table) *BuilderInsert

func (*BuilderInsert) Build

func (builder *BuilderInsert) Build() (result string, option []interface{}, err error)

func (*BuilderInsert) Insert

func (builder *BuilderInsert) Insert(insertTable *Table) *BuilderInsert

func (*BuilderInsert) SqlDialect

func (builder *BuilderInsert) SqlDialect(sqlDialect string) *BuilderInsert

func (*BuilderInsert) Value

func (builder *BuilderInsert) Value(insertValue ...interface{}) *BuilderInsert

type BuilderReplace

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

func NewBuilderReplace

func NewBuilderReplace(replaceTable *Table) *BuilderReplace

func (*BuilderReplace) Build

func (builder *BuilderReplace) Build() (result string, option []interface{}, err error)

func (*BuilderReplace) Replace

func (builder *BuilderReplace) Replace(replaceTable *Table) *BuilderReplace

func (*BuilderReplace) SqlDialect

func (builder *BuilderReplace) SqlDialect(sqlDialect string) *BuilderReplace

func (*BuilderReplace) Value

func (builder *BuilderReplace) Value(replaceValue ...interface{}) *BuilderReplace

type BuilderSelect

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

func NewBuilderSelect

func NewBuilderSelect(selectTable *Table) (selectBuilder *BuilderSelect)

func (*BuilderSelect) Build

func (builder *BuilderSelect) Build() (result string, option []interface{}, err error)

func (*BuilderSelect) Distinct

func (builder *BuilderSelect) Distinct(value bool) *BuilderSelect

func (*BuilderSelect) FromSelect

func (builder *BuilderSelect) FromSelect(fromSelectArray ...*BuilderSelect) *BuilderSelect

func (*BuilderSelect) FromTable

func (builder *BuilderSelect) FromTable(fromTableArray ...*Table) *BuilderSelect

func (*BuilderSelect) GetResponseTable

func (builder *BuilderSelect) GetResponseTable() *Table

func (*BuilderSelect) GetStruct

func (builder *BuilderSelect) GetStruct(tableStruct interface{}) (tableStructPtr interface{}, fieldArrayPtr []interface{}, err error)

func (*BuilderSelect) GetType

func (builder *BuilderSelect) GetType() reflect.Type

func (*BuilderSelect) Select

func (builder *BuilderSelect) Select(selectTable *Table) *BuilderSelect

func (*BuilderSelect) Where

func (builder *BuilderSelect) Where(whereStringArray ...string) *BuilderSelect

type BuilderUpdate

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

func NewBuilderUpdate

func NewBuilderUpdate(updateTable *Table) *BuilderUpdate

func (*BuilderUpdate) Build

func (builder *BuilderUpdate) Build() (result string, option []interface{}, err error)

func (*BuilderUpdate) Set

func (builder *BuilderUpdate) Set(setStringArray ...string) *BuilderUpdate

func (*BuilderUpdate) SqlDialect

func (builder *BuilderUpdate) SqlDialect(sqlDialect string) *BuilderUpdate

func (*BuilderUpdate) Update

func (builder *BuilderUpdate) Update(updateTable *Table) *BuilderUpdate

func (*BuilderUpdate) Where

func (builder *BuilderUpdate) Where(whereStringArray ...string) *BuilderUpdate

type BuilderWithDialect

type BuilderWithDialect interface {
	Builder
	SetDialect(string)
}

type BuilderWithResponse

type BuilderWithResponse interface {
	Build() (string, []interface{}, error)
	GetResponseTable() *Table
}

type Database

type Database struct {
	Transport
	// contains filtered or unexported fields
}

func NewDatabase

func NewDatabase(transport Transport, scheme Scheme) (*Database, error)

func (*Database) ExecuteCreateTable

func (database *Database) ExecuteCreateTable(createTable *Table) error

func (*Database) ExecuteDeleteTable

func (database *Database) ExecuteDeleteTable(deleteTable *Table) error

func (*Database) ExecuteDropTable

func (database *Database) ExecuteDropTable(dropTable *Table) (err error)

func (*Database) QueryTableIndexCount

func (database *Database) QueryTableIndexCount(table *Table) (indexLast int64, err error)

func (*Database) QueryTableIndexLast

func (database *Database) QueryTableIndexLast(table *Table) (indexLast int64, err error)

func (*Database) QueryValue

func (database *Database) QueryValue(request BuilderWithResponse) (response interface{}, err error)

func (*Database) RegisterTable

func (database *Database) RegisterTable(tableName string, tableStruct interface{}) (table *Table, err error)

type Scheme

type Scheme interface {
	SchemeRegister(*Database) error

	Import() error
	Export() error
	Migration(*Table, *SchemeStorageTable, *SchemeStorageTable) error

	RegisterTable(string, interface{}) (*Table, error)
}

func NewSchemeDatabase

func NewSchemeDatabase(storageName string, storageVersion int64) Scheme

type SchemeStorageStable

type SchemeStorageStable SchemeStorageV1

func (*SchemeStorageStable) GetHash

func (fieldUnit *SchemeStorageStable) GetHash() string

type SchemeStorageTable

type SchemeStorageTable struct {
	SchemeHeader  string
	SchemeVersion int64

	LocalTableName  string
	RemoteTableName string

	FieldMap map[string]*SchemeStorageStable
}

func SchemeHelperTableToFieldMap

func SchemeHelperTableToFieldMap(schemeHeader string, schemeVersion int64, table *Table) (*SchemeStorageTable, error)

func (*SchemeStorageTable) GetHash

func (fieldMap *SchemeStorageTable) GetHash() string

type SchemeStorageV1

type SchemeStorageV1 struct {
	SchemeHeader  string `sql:"NAME=scheme_header | NOT_NULL" json:"-"`
	SchemeVersion int64  `sql:"NAME=scheme_version | NOT_NULL" json:"-"`

	LocalTableName  string `sql:"NAME=local_table_name" json:"-"`
	RemoteTableName string `sql:"NAME=remote_table_name | TYPE=VARCHAR(256) | PRIMARY_KEY"`

	LocalFieldName  string `sql:"NAME=local_field_name" json:"-"`
	RemoteFieldName string `sql:"NAME=remote_field_name | TYPE=VARCHAR(256) | PRIMARY_KEY"`

	LocalFieldType  string `sql:"NAME=local_field_type" json:"-"`
	RemoteFieldType string `sql:"NAME=remote_field_type"`

	FieldIndex           int     `sql:"NAME=field_index"`
	FieldIsPrimaryKey    bool    `sql:"NAME=field_is_primarykey"`
	FieldIsAutoIncrement bool    `sql:"NAME=field_is_autoincrement"`
	FieldIsNotNull       bool    `sql:"NAME=field_is_notnull"`
	FieldInUniqueGroup   *string `sql:"NAME=field_in_uniquegroup"`
	FieldValueDefault    *string `sql:"NAME=field_value_default"`
	FieldValueCheck      *string `sql:"NAME=field_value_check"`
}

type Table

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

func NewTable

func NewTable(tableName string, tableStruct interface{}) (table *Table, err error)

func (*Table) GetAutoIncrement

func (table *Table) GetAutoIncrement() (autoIncrementArray *TableField)

func (*Table) GetFieldByGoName

func (table *Table) GetFieldByGoName(fieldGoName string) (tableField *TableField)

func (*Table) GetFieldByIndex

func (table *Table) GetFieldByIndex(fieldIndex int) (tableField *TableField)

func (*Table) GetFieldBySqlName

func (table *Table) GetFieldBySqlName(fieldSqlName string) (tableField *TableField)

func (*Table) GetGoFieldNameArray

func (table *Table) GetGoFieldNameArray() (goFieldNameArray []string)

func (*Table) GetGoName

func (table *Table) GetGoName() (goName string)

func (*Table) GetGoType

func (table *Table) GetGoType() (goType reflect.Type)

func (*Table) GetPrimaryKeyArray

func (table *Table) GetPrimaryKeyArray() (primaryKeyArray []*TableField)

func (*Table) GetSqlFieldNameArray

func (table *Table) GetSqlFieldNameArray() (sqlFieldNameArray []string)

func (*Table) GetSqlName

func (table *Table) GetSqlName() (sqlName string)

func (*Table) GetStruct

func (table *Table) GetStruct(tableStruct interface{}) (tableStructPtr interface{}, fieldArrayPtr []interface{}, err error)

func (*Table) GetUniqueArray

func (table *Table) GetUniqueArray(uniqueName string) (uniqueArray []*TableField)

func (*Table) GetUniqueNameArray

func (table *Table) GetUniqueNameArray() (uniqueNameArray []string)

type TableField

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

func (*TableField) GetGoIndex

func (field *TableField) GetGoIndex() (goIndex int)

func (*TableField) GetGoName

func (field *TableField) GetGoName() (goName string)

func (*TableField) GetGoType

func (field *TableField) GetGoType() (goType reflect.Kind)

func (*TableField) GetSqlIndex

func (field *TableField) GetSqlIndex() (sqlIndex int)

func (*TableField) GetSqlName

func (field *TableField) GetSqlName() (sqlName string)

func (*TableField) GetSqlType

func (field *TableField) GetSqlType() (sqlType string)

func (*TableField) InUniqueGroup

func (field *TableField) InUniqueGroup() *string

func (*TableField) IsAutoIncrement

func (field *TableField) IsAutoIncrement() bool

func (*TableField) IsNotNull

func (field *TableField) IsNotNull() bool

func (*TableField) IsPrimaryKey

func (field *TableField) IsPrimaryKey() bool

func (*TableField) ValueCheck

func (field *TableField) ValueCheck() *string

func (*TableField) ValueDefault

func (field *TableField) ValueDefault() *string

type Transaction

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

func NewTransaction

func NewTransaction(transport Transport) (*Transaction, error)

func (*Transaction) Commit

func (transaction *Transaction) Commit() error

func (*Transaction) Execute

func (transaction *Transaction) Execute(builderRequest Builder) error

func (*Transaction) ExecuteCreateTable

func (transaction *Transaction) ExecuteCreateTable(createTable *Table) error

func (*Transaction) ExecuteDeleteTable

func (transaction *Transaction) ExecuteDeleteTable(deleteTable *Table) error

func (*Transaction) ExecuteDropTable

func (transaction *Transaction) ExecuteDropTable(dropTable *Table) (err error)

func (*Transaction) ExecuteInsertValue

func (transaction *Transaction) ExecuteInsertValue(insertTable *Table, insertValueArray ...interface{}) (err error)

func (*Transaction) ExecuteReplaceValue

func (transaction *Transaction) ExecuteReplaceValue(replaceTable *Table, replaceValueArray ...interface{}) (err error)

func (*Transaction) ExecuteUpdateValue

func (transaction *Transaction) ExecuteUpdateValue(updateBuilder *BuilderUpdate) (err error)

func (*Transaction) GetChangeCount

func (transaction *Transaction) GetChangeCount() int64

func (*Transaction) GetError

func (transaction *Transaction) GetError() error

func (*Transaction) GetIndexLast

func (transaction *Transaction) GetIndexLast() int64

func (*Transaction) Query

func (transaction *Transaction) Query(builderRequest BuilderWithResponse) (interface{}, error)

func (*Transaction) Rollback

func (transaction *Transaction) Rollback() error

type Transport

type Transport interface {
	Lock()
	LockSqlDb() *sql.DB
	LockSqlTx() *sql.Tx
	Unlock()

	TransportRegister(*Database) error
	Open() error
	Close() error
	Execute(Builder) error
	Query(BuilderWithResponse) (interface{}, error)

	TransactionOpen() (*Transaction, error)
	TransactionCommit() error
	TransactionRollback() error
	TransactionStatus() (int64, int64, error)
	TransactionExecute(Builder) error
	TransactionQuery(BuilderWithResponse) (interface{}, error)
}

func NewTransportSimple

func NewTransportSimple(sqlDriver string, sqlSource string) Transport

Jump to

Keyboard shortcuts

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