db

package
v1.0.321 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2020 License: GPL-3.0 Imports: 16 Imported by: 0

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

Constants

This section is empty.

Variables

View Source
var (
	DigitsValidator = regexp.MustCompile(`^\d+$`)
)
View Source
var IDvalidator = regexp.MustCompile(`^\d+$`)
View Source
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 DoInsert

func DoInsert(sql string, args ...interface{}) (int, error)

DoInsert(sql string, args ...interface

func DoInsertFromForm

func DoInsertFromForm(r *http.Request, userID string, txConn ...*TxConnect) (lastInsertId int, err error)

выполняет запрос согласно переданным данным в POST, для суррогатных полей готовит запросы для изменения связанных полей возвращает id новой записи

func DoQuery

func DoQuery(sql string, args ...interface{}) *sql.Rows

func DoSelect

func DoSelect(sql string, args ...interface{}) (rows *sql.Rows, err error)

DoSelect(sql string, args ...interface

func DoUpdate

func DoUpdate(sql string, args ...interface{}) (int, error)

DoUpdate(sql string, args ...interface

func DoUpdateFromForm

func DoUpdateFromForm(r *http.Request, userID string, txConn ...*TxConnect) (RowsAffected int, err error)

выполняет запрос согласно переданным данным в POST, для суррогатных полей готовит запросы для изменения связанных полей возвращает количество измененных записей TODO: сменить проверку параметров в цикле на предпроверку и добавить связку с схемой БД

func DoUpdateFromMap

func DoUpdateFromMap(table string, mapData map[string]interface{}) (RowsAffected int, err error)

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 GetNameTableProps(tableValue, parentTable string) string

func GetParentFieldName

func GetParentFieldName(tableName string) (name string)

func GetResultToJSON

func GetResultToJSON(rows *sql.Rows) []byte

GetResultToJSON (rows *sql.Rows) []byte

func GetSimpleInsertSQLString

func GetSimpleInsertSQLString(table string, args ...string) string

функция возвращает стандартный sql для вставки данных в таблицу пример работы https://play.golang.org/p/4KeGhkskh5

func InitLists

func InitLists()

InitLists - инициализация получения информации по справочникам

func InitSchema

func InitSchema()

InitSchema read schema from DB & fill SchemaCache

func PerformSelectQuery

func PerformSelectQuery(sql string, args ...interface{}) (arrJSON []map[string]interface{}, err error)

Функция возвращает результат выполнения запроса в заданой структуре

func PrepareQuery

func PrepareQuery(sql string) (*sql.Stmt, 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

type ErrBadParam struct {
	Name     string
	BadName  string
	FuncName string
}

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

type ErrParamNotFound struct {
	Name     string
	FuncName string
}

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 struct {
	Self  menuItem
	Items []*menuItem
}
func (menu *MenuItems) GetMenu(id string) int

find submenu (init menu first) return count submenu items

func (menu *MenuItems) GetMenuByUserId(user_id int) int

получаем пункты мену по id_user (если пользователь является администратором то показываем меню администратора)

func (menu *MenuItems) Init(id string) int32

-1 означает, что нет нужного нам пункта в меню

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 SqlCustom

type SqlCustom struct {
	Table  string
	SqlBeg string
	SqlEnd string
	Sql    string
}

SqlCustom На основе этой структуры формируется запрос вида sqlBeg + table + sqlEnd

type TableOptions

type TableOptions struct {
	TABLE_NAME    string
	TABLE_TYPE    string
	ENGINE        string
	TABLE_COMMENT string
}

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

func StartTransaction() (*TxConnect, error)

StartTransaction - открытие транзакции. @return *TxConnect - connection

func (*TxConnect) CommitTransaction

func (conn *TxConnect) CommitTransaction()

CommitTransaction - Коммит транзакции.

func (*TxConnect) DoInsert

func (conn *TxConnect) DoInsert(sql string, args ...interface{}) (int, error)

DoInsert - Выполнение INSERT запроса для заданой транзакции

func (*TxConnect) DoInsertFromForm

func (conn *TxConnect) DoInsertFromForm(r *http.Request, userID string) (lastInsertId int, err error)

DoInsertFromForm - выполняет запрос согласно переданным данным в POST, для суррогатных полей готовит запросы для изменения связанных полей возвращает id новой записи @see DoInsertFromForm

func (*TxConnect) DoQuery

func (conn *TxConnect) DoQuery(sql string, args ...interface{}) *sql.Rows

DoQuery - Выполнение произвольного запроса для заданой транзакции

func (*TxConnect) DoSelect

func (conn *TxConnect) DoSelect(sql string, args ...interface{}) (*sql.Rows, error)

DoSelect - Выполнение SELECT запроса для заданой транзакции

func (*TxConnect) DoUpdate

func (conn *TxConnect) DoUpdate(sql string, args ...interface{}) (int, error)

DoUpdate - Выполнение UPDATE запроса для заданой транзакции

func (*TxConnect) DoUpdateFromForm

func (conn *TxConnect) DoUpdateFromForm(r *http.Request, userID string) (RowsAffected int, err error)

DoUpdateFromForm - выполняет запрос согласно переданным данным в POST, для суррогатных полей готовит запросы для изменения связанных полей возвращает количество измененных записей

func (*TxConnect) PrepareQuery

func (conn *TxConnect) PrepareQuery(sql string) (*sql.Stmt, error)

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

Jump to

Keyboard shortcuts

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