Documentation ¶
Overview ¶
some function for request БД
GetDataCustom get data with custom sql query Give begSQL + tableName + endSQL, split, run sql DoUpdateFromMap - function generate sql query from data map
Package db Реализует функции работы с транзакциями Copyright 2017
Author's: Mykhailo Sizov sizov.mykhailo@gmail.com
All rights reserved. version 1.0 Базовый функционал для работы с транзакциями. Важно : откат изменений происходит только в рамках данной транзакции!
Index ¶
- Variables
- func ConvertPrepareRowToJson(rowField map[string]*sql.NullString, columns []string, ...) (id int, arrJSON map[string]interface{}, err error)
- func ConvertPrepareRowsToJson(rows *sql.Rows, row []interface{}, rowField map[string]*sql.NullString, ...) (arrJSON []map[string]interface{}, err error)
- func DoInsert(sql string, args ...interface{}) (int, error)
- func DoInsertFromForm(r *http.Request, userID string, txConn ...*TxConnect) (lastInsertId int, err error)
- func DoQuery(sql string, args ...interface{}) *sql.Rows
- func DoSelect(sql string, args ...interface{}) (rows *sql.Rows, err error)
- func DoUpdate(sql string, args ...interface{}) (int, error)
- func DoUpdateFromForm(r *http.Request, userID string, txConn ...*TxConnect) (RowsAffected int, err error)
- func DoUpdateFromMap(table string, mapData map[string]interface{}) (RowsAffected int, err error)
- func GetDataCustom(sqlParam SqlCustom, args ...interface{}) (rows *sql.Rows, row []interface{}, rowField map[string]*sql.NullString, ...)
- func GetDataPrepareRowsToReading(sql string, args ...interface{}) (rows *sql.Rows, row []interface{}, rowField map[string]*sql.NullString, ...)
- func GetNameTableProps(tableValue, parentTable string) string
- func GetParentFieldName(tableName string) (name string)
- func GetResultToJSON(rows *sql.Rows) []byte
- func GetSimpleInsertSQLString(table string, args ...string) string
- func HandlerDBQuery(w http.ResponseWriter, r *http.Request)
- func InitLists()
- func InitSchema()
- func PerformSelectQuery(sql string, args ...interface{}) (arrJSON []map[string]interface{}, err error)
- func PrepareQuery(sql string) (*sql.Stmt, error)
- func PrepareRowsToReading(rows *sql.Rows) (row []interface{}, rowField map[string]*sql.NullString, columns []string, ...)
- type ErrBadParam
- type ErrBadSelectQuery
- type ErrParamNotFound
- type FieldStructure
- type FieldsTable
- type MenuItems
- type RecordsTables
- type SqlCustom
- type TableOptions
- type TxConnect
- func (conn *TxConnect) CommitTransaction()
- func (conn *TxConnect) DoInsert(sql string, args ...interface{}) (int, error)
- func (conn *TxConnect) DoInsertFromForm(r *http.Request, userID string) (lastInsertId int, err error)
- func (conn *TxConnect) DoQuery(sql string, args ...interface{}) *sql.Rows
- func (conn *TxConnect) DoSelect(sql string, args ...interface{}) (*sql.Rows, error)
- func (conn *TxConnect) DoUpdate(sql string, args ...interface{}) (int, error)
- func (conn *TxConnect) DoUpdateFromForm(r *http.Request, userID string) (RowsAffected int, err error)
- func (conn *TxConnect) PrepareQuery(sql string) (*sql.Stmt, error)
- func (conn *TxConnect) RollbackTransaction()
Constants ¶
This section is empty.
Variables ¶
var (
DigitsValidator = regexp.MustCompile(`^\d+$`)
)
var IDvalidator = regexp.MustCompile(`^\d+$`)
var (
SQLvalidator = regexp.MustCompile(`^(\s*)?(\()?select(\s+.+\s)+(\s*)?from\s+`)
)
Functions ¶
func ConvertPrepareRowToJson ¶
func ConvertPrepareRowToJson(rowField map[string]*sql.NullString, columns []string, colTypes []*sql.ColumnType) (id int, arrJSON map[string]interface{}, err error)
ConvertPrepareRowToJson convert one row to json @author Sergey Litvinov
func ConvertPrepareRowsToJson ¶
func ConvertPrepareRowsToJson(rows *sql.Rows, row []interface{}, rowField map[string]*sql.NullString, columns []string, colTypes []*sql.ColumnType) (arrJSON []map[string]interface{}, err error)
ConvertPrepareRowsToJson convert many rows to json @author Sergey Litvinov
func DoInsertFromForm ¶
func DoInsertFromForm(r *http.Request, userID string, txConn ...*TxConnect) (lastInsertId int, err error)
выполняет запрос согласно переданным данным в POST, для суррогатных полей готовит запросы для изменения связанных полей возвращает id новой записи
func DoUpdateFromForm ¶
func DoUpdateFromForm(r *http.Request, userID string, txConn ...*TxConnect) (RowsAffected int, err error)
выполняет запрос согласно переданным данным в POST, для суррогатных полей готовит запросы для изменения связанных полей возвращает количество измененных записей TODO: сменить проверку параметров в цикле на предпроверку и добавить связку с схемой БД
func DoUpdateFromMap ¶
DoUpdateFromMap - function generate sql update query from data map with current id @author Sergey Litvinov @version 1.10 2017-06-15 Add new validation type(Sergey Litvinov)
func GetDataCustom ¶
func GetDataCustom(sqlParam SqlCustom, args ...interface{}) (rows *sql.Rows, row []interface{}, rowField map[string]*sql.NullString, columns []string, colTypes []*sql.ColumnType, err error)
GetDataCustom get data with custom sql query Give begSQL + tableName + endSQL, split, run sql @version 2.00 2017-04-20 @author Sergey Litvinov
func GetDataPrepareRowsToReading ¶
func GetDataPrepareRowsToReading(sql string, args ...interface{}) (rows *sql.Rows, row []interface{}, rowField map[string]*sql.NullString, columns []string, colTypes []*sql.ColumnType, err error)
GetDataPrepareRowsToReading - function get rows with structure field @author Sergey Litvinov
func GetNameTableProps ¶
func GetParentFieldName ¶
func GetResultToJSON ¶
GetResultToJSON (rows *sql.Rows) []byte
func GetSimpleInsertSQLString ¶
функция возвращает стандартный sql для вставки данных в таблицу пример работы https://play.golang.org/p/4KeGhkskh5
func HandlerDBQuery ¶
func HandlerDBQuery(w http.ResponseWriter, r *http.Request)
func PerformSelectQuery ¶
func PerformSelectQuery(sql string, args ...interface{}) (arrJSON []map[string]interface{}, err error)
Функция возвращает результат выполнения запроса в заданой структуре
func PrepareRowsToReading ¶
func PrepareRowsToReading(rows *sql.Rows) (row []interface{}, rowField map[string]*sql.NullString, columns []string, colTypes []*sql.ColumnType)
func (rows *Myrow) Scan(value interface{}) err {
return true
} подготовка для цикла чтения записей, формирует row для сканирования записи,rowField - для выборки значение и массив типов для последующей обработки
Types ¶
type ErrBadParam ¶
ErrBadParam is parameter not valid
func (ErrBadParam) Error ¶
func (err ErrBadParam) Error() string
type ErrBadSelectQuery ¶
type ErrBadSelectQuery struct {
Sql, Message string
}
func (ErrBadSelectQuery) Error ¶
func (err ErrBadSelectQuery) Error() string
type ErrParamNotFound ¶
ErrParamNotFound if not found requiared parameter
func (ErrParamNotFound) Error ¶
func (err ErrParamNotFound) Error() string
type FieldStructure ¶
type FieldStructure struct { COLUMN_NAME string DATA_TYPE string COLUMN_DEFAULT sql.NullString IS_NULLABLE string CHARACTER_SET_NAME sql.NullString COLUMN_COMMENT sql.NullString COLUMN_TYPE string COLUMN_KEY string EXTRA string CHARACTER_MAXIMUM_LENGTH sql.NullInt64 }
FieldStructure get field properties
type FieldsTable ¶
type FieldsTable struct { Rows []FieldStructure Options TableOptions }
FieldsTable get fields from table & options
func (*FieldsTable) GetColumnsProp ¶
func (ns *FieldsTable) GetColumnsProp(tableName string, args ...int) error
GetColumnsProp получение значений полей для форматирования данных получение значений полей для таблицы @param args []int{} - можно передавать ограничения выводимых полей. Действует как LIMIT a или LIMIT a, b
func (*FieldsTable) PutDataFrom ¶
func (ns *FieldsTable) PutDataFrom(tableName string) (fields *schema.FieldsTable)
PutDataFrom заполняет структуру для формы данными, взятыми из структуры БД
type MenuItems ¶
type MenuItems struct { Self menuItem Items []*menuItem }
func (*MenuItems) GetMenuByUserId ¶
получаем пункты мену по id_user (если пользователь является администратором то показываем меню администратора)
type RecordsTables ¶
type RecordsTables struct {
Rows []TableOptions
}
RecordsTables get field properties
func (*RecordsTables) GetSelectTablesProp ¶
func (ns *RecordsTables) GetSelectTablesProp(where string, args ...interface{}) error
GetSelectTablesProp получение данных таблиц по условию
func (*RecordsTables) GetTablesProp ¶
func (ns *RecordsTables) GetTablesProp(nameDB string) error
GetTablesProp получение таблиц
type TableOptions ¶
TableOptions get table properties
func (*TableOptions) GetTableProp ¶
func (ns *TableOptions) GetTableProp(tableName string) error
GetTableProp получение данных для одной таблицы
type TxConnect ¶
type TxConnect struct {
// contains filtered or unexported fields
}
TxConnect - тип данных, что хранит транзакцию @see database/sql
func StartTransaction ¶
StartTransaction - открытие транзакции. @return *TxConnect - connection
func (*TxConnect) CommitTransaction ¶
func (conn *TxConnect) CommitTransaction()
CommitTransaction - Коммит транзакции.
func (*TxConnect) DoInsertFromForm ¶
func (conn *TxConnect) DoInsertFromForm(r *http.Request, userID string) (lastInsertId int, err error)
DoInsertFromForm - выполняет запрос согласно переданным данным в POST, для суррогатных полей готовит запросы для изменения связанных полей возвращает id новой записи @see DoInsertFromForm
func (*TxConnect) DoUpdateFromForm ¶
func (conn *TxConnect) DoUpdateFromForm(r *http.Request, userID string) (RowsAffected int, err error)
DoUpdateFromForm - выполняет запрос согласно переданным данным в POST, для суррогатных полей готовит запросы для изменения связанных полей возвращает количество измененных записей
func (*TxConnect) PrepareQuery ¶
PrepareQuery - реализация метода подготовки запроса для заданой транзакции
func (*TxConnect) RollbackTransaction ¶
func (conn *TxConnect) RollbackTransaction()
RollbackTransaction - Откат транзакции
Directories ¶
Path | Synopsis |
---|---|
Package cache хранит кешированные данные БД (пока только справочники) для использования при отдаче данных
|
Package cache хранит кешированные данные БД (пока только справочники) для использования при отдаче данных |
Package multiquery create, check & run queryes for children tables in main query
|
Package multiquery create, check & run queryes for children tables in main query |
Package qb has Query Builder for manipulate SQL-queryes & check in databases schema her parameters
|
Package qb has Query Builder for manipulate SQL-queryes & check in databases schema her parameters |