Documentation
¶
Index ¶
- Constants
- func DatabaseDriverName(db *sql.DB) string
- func TableColumnExists(ctx database.QueryableContext, tableName, columnName string) (exists bool, err error)
- func TableCreate(ctx context.Context, db *sql.DB, tableName string, columns []Column) error
- func TableCreateSql(db *sql.DB, tableName string, columns []Column) string
- func TableDrop(ctx database.QueryableContext, tableName string) error
- func TableDropIfExists(ctx database.QueryableContext, tableName string) error
- func TableDropIfExistsSql(ctx database.QueryableContext, tableName string) (string, error)
- func TableDropSql(ctx database.QueryableContext, tableName string) (string, error)
- type Builder
- func (b *Builder) Column(column Column) BuilderInterface
- func (b *Builder) Create() string
- func (b *Builder) CreateIfNotExists() string
- func (b *Builder) CreateIndex(indexName string, columnName ...string) string
- func (b *Builder) Delete() string
- func (b *Builder) Drop() string
- func (b *Builder) DropIfExists() string
- func (b *Builder) GroupBy(groupBy GroupBy) BuilderInterface
- func (b *Builder) Insert(columnValuesMap map[string]string) string
- func (b *Builder) Limit(limit int64) BuilderInterface
- func (b *Builder) Offset(offset int64) BuilderInterface
- func (b *Builder) OrderBy(columnName, direction string) BuilderInterface
- func (b *Builder) Select(columns []string) string
- func (b *Builder) Table(tableName string) BuilderInterface
- func (b *Builder) TableColumnAdd(tableName string, column Column) (sql string, err error)
- func (b *Builder) TableColumnChange(tableName string, column Column) (sqlString string, err error)
- func (b *Builder) TableColumnDrop(tableName, columnName string) (sqlString string, err error)
- func (b *Builder) TableColumnExists(tableName, columnName string) (sql string, params []interface{}, err error)
- func (b *Builder) TableColumnRename(tableName, oldColumnName, newColumnName string) (sql string, err error)
- func (b *Builder) TableRename(oldTableName, newTableName string) (sql string, err error)
- func (b *Builder) Truncate() string
- func (b *Builder) Update(columnValues map[string]string) string
- func (b *Builder) View(viewName string) BuilderInterface
- func (b *Builder) ViewColumns(columns []string) BuilderInterface
- func (b *Builder) ViewSQL(sql string) BuilderInterface
- func (b *Builder) Where(where *Where) BuilderInterface
- type BuilderInterface
- type Column
- type ColumnSQLGenerator
- type Database
- func (d *Database) BeginTransaction() (err error)
- func (d *Database) BeginTransactionWithContext(ctx context.Context, opts *sql.TxOptions) (err error)
- func (d *Database) Close() (err error)
- func (d *Database) CommitTransaction() (err error)
- func (d *Database) DB() *sql.DB
- func (d *Database) DebugEnable(debug bool)
- func (d *Database) Exec(ctx context.Context, sqlStr string, args ...any) (sql.Result, error)
- func (d *Database) ExecInTransaction(ctx context.Context, fn func(d *Database) error) (err error)
- func (d *Database) IsMssql() bool
- func (d *Database) IsMysql() bool
- func (d *Database) IsPostgres() bool
- func (d *Database) IsSqlite() bool
- func (d *Database) Open() (err error)
- func (d *Database) Query(ctx context.Context, sqlStr string, args ...any) (*sql.Rows, error)
- func (d *Database) RollbackTransaction() (err error)
- func (d *Database) SelectToMapAny(ctx context.Context, sqlStr string, args ...any) ([]map[string]any, error)
- func (d *Database) SelectToMapString(ctx context.Context, sqlStr string, args ...any) ([]map[string]string, error)
- func (d *Database) SqlLog() []map[string]string
- func (d *Database) SqlLogEmpty()
- func (d *Database) SqlLogEnable(enable bool)
- func (d *Database) SqlLogLen() int
- func (d *Database) SqlLogShrink(leaveLast int)
- func (d *Database) Tx() *sql.Tx
- func (d *Database) Type() string
- type DatabaseInterface
- type GroupBy
- type MSSQLColumnSQLGenerator
- type MySQLColumnSQLGenerator
- type OrderBy
- type PostgreSQLColumnSQLGenerator
- type SQLiteColumnSQLGenerator
- type Where
Constants ¶
const ASC = "asc"
Sortable
const COLUMN_ATTRIBUTE_AUTO = "auto"
Column Attributes
const COLUMN_ATTRIBUTE_DECIMALS = "decimals"
const COLUMN_ATTRIBUTE_LENGTH = "length"
const COLUMN_ATTRIBUTE_NULLABLE = "nullable"
const COLUMN_ATTRIBUTE_PRIMARY = "primary"
const COLUMN_TYPE_BLOB = "blob"
Column Types
const COLUMN_TYPE_DATE = "date"
const COLUMN_TYPE_DATETIME = "datetime"
const COLUMN_TYPE_DECIMAL = "decimal"
const COLUMN_TYPE_FLOAT = "float"
const COLUMN_TYPE_INTEGER = "integer"
const COLUMN_TYPE_LONGTEXT = "longtext"
const COLUMN_TYPE_STRING = "string"
const COLUMN_TYPE_TEXT = "text"
const DESC = "desc"
const DIALECT_MSSQL = "mssql"
Dialects
const DIALECT_MYSQL = "mysql"
const DIALECT_POSTGRES = "postgres"
const DIALECT_SQLITE = "sqlite"
const MAX_DATE = "9999-12-31"
const MAX_DATETIME = "9999-12-31 23:59:59"
const NO = "no"
const NULL_DATE = "0002-01-01"
Null time (earliest valid date in Gregorian calendar is 1AD, no year 0)
const NULL_DATETIME = "0002-01-01 00:00:00"
const YES = "yes"
Common
Variables ¶
This section is empty.
Functions ¶
func DatabaseDriverName ¶
DatabaseDriverName finds the driver name from database
func TableColumnExists ¶
func TableColumnExists(ctx database.QueryableContext, tableName, columnName string) (exists bool, err error)
TableColumnExists checks if a column exists in a table for various database types.
func TableCreate ¶
func TableDropIfExists ¶
func TableDropIfExists(ctx database.QueryableContext, tableName string) error
func TableDropIfExistsSql ¶
func TableDropIfExistsSql(ctx database.QueryableContext, tableName string) (string, error)
func TableDropSql ¶
func TableDropSql(ctx database.QueryableContext, tableName string) (string, error)
Types ¶
type Builder ¶
type Builder struct {
Dialect string
// contains filtered or unexported fields
}
func NewBuilder ¶
func (*Builder) Column ¶
func (b *Builder) Column(column Column) BuilderInterface
func (*Builder) Create ¶
*
- The create method creates new database or table.
- If the database or table can not be created it will return false.
- False will be returned if the database or table already exist.
- <code>
- // Creating a new database
- $database->create(); *
- // Creating a new table
- $database->table("STATES")
- ->column("STATE_NAME","STRING")
- ->create();
- </code>
- @return boolean true, on success, false, otherwise
- @access public
func (*Builder) CreateIfNotExists ¶
func (*Builder) CreateIndex ¶
func (*Builder) Delete ¶
*
- The delete method deletes a row in a table. For deleting a database
- or table use the drop method.
- <code>
- // Deleting a row
- sql := builder.Table("STATES").Where("STATE_NAME","=","Alabama").Delete();
- </code>
- @return string
- @access public
Drop deletes a table
func (*Builder) DropIfExists ¶
func (*Builder) GroupBy ¶
func (b *Builder) GroupBy(groupBy GroupBy) BuilderInterface
func (*Builder) Insert ¶
*
- The <b>update</b> method updates the values of a row in a table.
- <code>
- $updated_user = array("USER_MANE"=>"Mike");
- $database->table("USERS")->where("USER_NAME","==","Peter")->update($updated_user);
- </code>
- @param Array an associative array, where keys are the column names of the table
- @return int 0 or 1, on success, false, otherwise
- @access public
func (*Builder) Limit ¶
func (b *Builder) Limit(limit int64) BuilderInterface
func (*Builder) Offset ¶
func (b *Builder) Offset(offset int64) BuilderInterface
func (*Builder) OrderBy ¶
func (b *Builder) OrderBy(columnName, direction string) BuilderInterface
func (*Builder) Select ¶
* The <b>select</b> method selects rows from a table, based on criteria.
- <code>
- // Selects all the rows from the table
- $db->table("USERS")->select(); *
- // Selects the rows where the column NAME is different from Peter, in descending order
- $db->table("USERS")
- ->where("NAME","!=","Peter")
- ->orderby("NAME","desc")
- ->select();
- </code>
- @return mixed rows as associative array, false on error
- @access public
func (*Builder) Table ¶
func (b *Builder) Table(tableName string) BuilderInterface
func (*Builder) TableColumnAdd ¶
TableColumnAdd adds a column to the table
func (*Builder) TableColumnChange ¶
TableColumnChange changes a column in the table
func (*Builder) TableColumnDrop ¶
TableColumnDrop drops a column from the table
func (*Builder) TableColumnExists ¶
func (b *Builder) TableColumnExists(tableName, columnName string) (sql string, params []interface{}, err error)
TableColumnExists checks if a column exists in a table for various database types
Example:
b := NewBuilder(DIALECT_MYSQL)
sqlString, sqlParams, err := b.TableColumnExists("test_table", "test_column")
Params: - tableName: The name of the table to check. - columnName: The name of the column to check.
Returns: - sql: The SQL statement to check for the existence of the column. - params: An array of parameters to be bound to the statement. - err: An error object, if any.
func (*Builder) TableColumnRename ¶
func (*Builder) TableRename ¶
Rename renames a table or a view
func (*Builder) Update ¶
*
- The <b>update</b> method updates the values of a row in a table.
- <code>
- $updated_user = array("USER_MANE"=>"Mike");
- $database->table("USERS")->where("USER_NAME","==","Peter")->update($updated_user);
- </code>
- @param Array an associative array, where keys are the column names of the table
- @return int 0 or 1, on success, false, otherwise
- @access public
func (*Builder) View ¶
func (b *Builder) View(viewName string) BuilderInterface
func (*Builder) ViewColumns ¶
func (b *Builder) ViewColumns(columns []string) BuilderInterface
func (*Builder) ViewSQL ¶
func (b *Builder) ViewSQL(sql string) BuilderInterface
func (*Builder) Where ¶
func (b *Builder) Where(where *Where) BuilderInterface
type BuilderInterface ¶
type BuilderInterface interface {
// Column adds a column to the table
Column(column Column) BuilderInterface
// Create creates a table
Create() string
// CreateIfNotExists creates a table if it doesn't exist
CreateIfNotExists() string
// CreateIndex creates an index on the table
CreateIndex(indexName string, columnName ...string) string
// Delete deletes a table
Delete() string
// Drop drops a table
Drop() string
// DropIfExists drops a table if it exists
DropIfExists() string
// Insert inserts a row into the table
Insert(columnValuesMap map[string]string) string
// GroupBy groups the results by a column
GroupBy(groupBy GroupBy) BuilderInterface
// Limit limits the number of results
Limit(limit int64) BuilderInterface
// Offset offsets the results
Offset(offset int64) BuilderInterface
// OrderBy orders the results by a column
OrderBy(columnName string, sortDirection string) BuilderInterface
// Select selects the columns from the table
Select(columns []string) string
// Table sets the table name
Table(name string) BuilderInterface
// Update updates a row in the table
Update(columnValues map[string]string) string
// View sets the view name
View(name string) BuilderInterface
// ViewColumns sets the view columns
ViewColumns(columns []string) BuilderInterface
// ViewSQL sets the view SQL
ViewSQL(sql string) BuilderInterface
// Where sets the where clause
Where(where *Where) BuilderInterface
// TableColumnAdd adds a column to the table
TableColumnAdd(tableName string, column Column) (sqlString string, err error)
// TableColumnChange changes a column in the table
TableColumnChange(tableName string, column Column) (sqlString string, err error)
// Table column drop drops a column
TableColumnDrop(tableName string, columnName string) (sqlString string, err error)
// TableColumnExists checks if a column exists in a table
TableColumnExists(tableName, columnName string) (sqlString string, sqlParams []any, err error)
// TableColumnRename renames a column in a table
TableColumnRename(tableName, oldColumnName, newColumnName string) (sqlString string, err error)
// TableRename renames a table
TableRename(oldTableName string, newTableName string) (sqlString string, err error)
}
type Column ¶
type Column struct {
Name string
Type string
Length int
Decimals int
AutoIncrement bool
PrimaryKey bool
Nullable bool
Unique bool
Default string
}
func TableColumns ¶
func TableColumns(ctx database.QueryableContext, tableName string, commonize bool) (columns []Column, err error)
TableColumns returns a list of columns for a given table name
type ColumnSQLGenerator ¶
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
func (*Database) BeginTransaction ¶
func (*Database) BeginTransactionWithContext ¶
func (*Database) CommitTransaction ¶
func (*Database) DebugEnable ¶
func (*Database) ExecInTransaction ¶
func (*Database) IsPostgres ¶
func (*Database) RollbackTransaction ¶
func (*Database) SelectToMapAny ¶
func (*Database) SelectToMapString ¶
func (*Database) SqlLogEmpty ¶
func (d *Database) SqlLogEmpty()
func (*Database) SqlLogEnable ¶
func (*Database) SqlLogShrink ¶
type DatabaseInterface ¶
type DatabaseInterface interface {
// DB the database connection
DB() *sql.DB
// Type the database type, i.e. "mssql", "mysql", "postgres", "sqlite"
Type() string
// BeginTransaction starts a transaction
BeginTransaction() (err error)
// BeginTransactionWithContext starts a transaction with context
BeginTransactionWithContext(ctx context.Context, opts *sql.TxOptions) (err error)
// Close closes the database
Close() (err error)
// CommitTransaction commits the transaction
CommitTransaction() (err error)
// DebugEnable enables or disables debug
DebugEnable(debug bool)
// ExecInTransaction executes a function in a transaction
ExecInTransaction(ctx context.Context, fn func(d *Database) error) (err error)
// Exec executes a query
Exec(ctx context.Context, sqlStr string, args ...any) (sql.Result, error)
// IsMssql checks if the database is MSSQL
IsMssql() bool
// IsMysql checks if the database is MySQL
IsMysql() bool
// IsPostgres checks if the database is PostgreSQL
IsPostgres() bool
// IsSqlite checks if the database is SQLite
IsSqlite() bool
// SqlLog returns the SQL log
SqlLog() []map[string]string
// SqlLogEmpty clears the SQL log
SqlLogEmpty()
// SqlLogLen returns the length of the SQL log
SqlLogLen() int
// SqlLogEnable enables or disables the SQL log
SqlLogEnable(enable bool)
// SqlLogShrink shrinks the SQL log to the last n entries
SqlLogShrink(leaveLast int)
// Open opens the database
Open() (err error)
// Query queries the database
Query(ctx context.Context, sqlStr string, args ...any) (*sql.Rows, error)
// RollbackTransaction rolls back the transaction
RollbackTransaction() (err error)
// SelectToMapAny selects rows from the database and returns them
// as a map of any
SelectToMapAny(ctx context.Context, sqlStr string, args ...any) ([]map[string]any, error)
// SelectToMapString selects rows from the database and returns them
// as a map of strings
SelectToMapString(ctx context.Context, sqlStr string, args ...any) ([]map[string]string, error)
// Tx the transaction
Tx() *sql.Tx
}
func NewDatabase ¶
func NewDatabase(db *sql.DB, databaseType string) DatabaseInterface
func NewDatabaseFromDriver ¶
func NewDatabaseFromDriver(driverName, dataSourceName string) (DatabaseInterface, error)
type MSSQLColumnSQLGenerator ¶
type MSSQLColumnSQLGenerator struct{}
func (MSSQLColumnSQLGenerator) GenerateSQL ¶
func (g MSSQLColumnSQLGenerator) GenerateSQL(column Column) string
type MySQLColumnSQLGenerator ¶
type MySQLColumnSQLGenerator struct{}
func (MySQLColumnSQLGenerator) GenerateSQL ¶
func (g MySQLColumnSQLGenerator) GenerateSQL(column Column) string
type PostgreSQLColumnSQLGenerator ¶
type PostgreSQLColumnSQLGenerator struct{}
func (PostgreSQLColumnSQLGenerator) GenerateSQL ¶
func (g PostgreSQLColumnSQLGenerator) GenerateSQL(column Column) string
type SQLiteColumnSQLGenerator ¶
type SQLiteColumnSQLGenerator struct{}
func (SQLiteColumnSQLGenerator) GenerateSQL ¶
func (g SQLiteColumnSQLGenerator) GenerateSQL(column Column) string