database

package
v1.9.8 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2023 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (

	/*INTP : tipo core entero*/
	INTP TpCore = "integer"
	/*STTP : tipo core texto*/
	STTP TpCore = "string"
	/*FLTP : tipo core numerico*/
	FLTP TpCore = "number"
	/*BLTP : tipo core condicional*/
	BLTP TpCore = "bool"
	/*DTTP : tipo core date*/
	DTTP TpCore = "date"
	/*JSONTP : tipo core json*/
	JSONTP TpCore = "json"

	/*SQLLite : conexion tipo sqllite
	https://github.com/mattn/go-sqlite3
	*/
	SQLLite = "SQLLITE"
	/*Ora : conexion tipo oracle
	https://gopkg.in/rana/ora.v4
	*/
	Ora = "ORA"
	/*Post : conexion tipo postgres
	https://github.com/lib/pq
	*/
	Post = "POST"
	/*Mysql : conexion tipo mysql
	https://github.com/go-sql-driver/mysql
	*/
	Mysql = "MYSQL"
	/*Sqlser : conexion tipo sql server
	https://github.com/denisenkom/go-mssqldb
	*/
	Sqlser = "SQLSER"
	/*INSERT : prefijo de insert */
	INSERT = "INSERT"
	/*UPDATE : prefijo de UPDATE */
	UPDATE = "UPDATE"
	/*DELETE : prefijo de DELETE */
	DELETE = "DELETE"
	/*SELECT : prefijo de select*/
	SELECT = "SELECT"
	/*FROM : prefijo de tablas */
	FROM = "FROM"
)

Variables

View Source
var (
	/*TESTTABLE : quieries para probar si una tabla existe en la base de datos*/
	TESTTABLE = map[string]string{
		Ora: `
		SELECT CASE WHEN COUNT(*) > 0
			THEN 1 ELSE 0 END REG
		FROM ALL_TABLES
		WHERE  TABLE_NAME = :TABLENAME
		`,
		Post: `
		SELECT CASE WHEN EXISTS (
			SELECT FROM PG_TABLES
			WHERE    TABLENAME  = :TABLENAME
			) THEN 1 ELSE 0 END  REG
		`,
		Mysql: `
		SELECT CASE  WHEN EXISTS(
			SELECT * FROM INFORMATION_SCHEMA.TABLES
			WHERE TABLE_NAME = :TABLENAME
			) > 0 THEN 1 ELSE 0 END REG
		`,
		Sqlser: `
		SELECT CASE  WHEN EXISTS(
			SELECT * FROM INFORMATION_SCHEMA.TABLES
			WHERE TABLE_NAME = :TABLENAME
			) THEN 1 ELSE 0 END REG
		`,
		SQLLite: `
		SELECT CASE  WHEN EXISTS(
			SELECT *
            FROM SQLITE_MASTER
            WHERE TYPE = 'TABLE' AND NAME = :TABLENAME
			) THEN 1 ELSE 0 END REG
		`,
	}
	/*CADCONN : contiene el formato de las cadenas de conexion*/
	CADCONN = map[string]string{
		Ora:     "%s/%s@%s:%d/%s",
		Post:    "postgres://%s:%s@%s:%d/%s?sslmode=%s",
		Mysql:   "%s:%s@tcp(%s:%d)/%s",
		Sqlser:  "server=%s;user id=%s;password=%s;port=%d;database=%s;",
		SQLLite: "%s",
	}
	/*PrefijosDB : contiene los string de conexion al momento de ejecutar la funcion open*/
	PrefijosDB = map[string]string{
		Ora:     "ora",
		Post:    "postgres",
		Mysql:   "mysql",
		Sqlser:  "mssql",
		SQLLite: "sqlite3",
	}
	/*FORMATTOSTRCONECT : formato to string para la conexion de base de datos*/
	FORMATTOSTRCONECT = "[%s|%s|%s|%d|%s|%s|%s|%s]"
	/*Ssmodes : hace referencia si tienen conexion ssl
	0* disable - No SSL
	1* require - Always SSL (skip verification)
	2* verify-ca - Always SSL (verify that the certificate presented by the
	  server was signed by a trusted CA)
	3* verify-full - Always SSL (verify that the certification presented by
	  the server was signed by a trusted CA and the server host name
	  matches the one in the certificate)

	*/
	Ssmodes = []string{"disable", "require", "verify-ca", "verify-full"}
)

Functions

func CreateDBConect added in v1.7.8

func CreateDBConect(cnx StCadConect, pass string) ([]byte, error)

CreateDBConect : Crea una conexion de base de datos valida y la genera como un .db con una clave aes

func CreateDbFile added in v1.7.8

func CreateDbFile(cnx StCadConect, pass, dir, name string) error

CreateDbFile : crea un archivo de configuracion valida para base de datos encriptado

func FindTp

func FindTp(v interface{}, tp TpCore) interface{}

FindTp : busca el tipo de datos para las tablas con constante prederminadas INTP : tipo core entero STTP : tipo core texto FLTP : tipo core numerico BLTP : tipo core condicional DTTP : tipo core date

Types

type DataTable

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

DataTable : maneja un crud completo y genera script automaticos

func NewDataTable added in v1.7.8

func NewDataTable(table string, rows []StData, index []string) DataTable

NewDataTable : Crea un datable correctamente

func (*DataTable) AddIndex

func (p *DataTable) AddIndex(col string) error

AddIndex : agrega una llave para los delete o update

func (*DataTable) AddIndexs

func (p *DataTable) AddIndexs(cols ...string) error

AddIndexs : agrega varias claves primarias

func (*DataTable) AddRow

func (p *DataTable) AddRow(row StData)

AddRow : Agrega una fila

func (*DataTable) AddRows

func (p *DataTable) AddRows(rows ...StData)

AddRows : Agrega varias fila

func (*DataTable) GenDeletes

func (p *DataTable) GenDeletes() ([]StQuery, error)

GenDeletes : genera los delete masivos para modificaciones de base de datos

func (*DataTable) GenInserts

func (p *DataTable) GenInserts() ([]StQuery, error)

GenInserts : genera insert masivos para modificaciones de base de datos

func (*DataTable) GenSQL

func (p *DataTable) GenSQL(accion string) ([]StQuery, error)

GenSQL : genera acciones de base de datos mediante los siguientes comando INSERT,UPDATE,DELETE

func (*DataTable) GenUpdates

func (p *DataTable) GenUpdates() ([]StQuery, error)

GenUpdates : genera los update masivos para modificaciones de base de datos de ante mano tener que colocar indices

func (*DataTable) GetCols

func (p *DataTable) GetCols() ([]string, error)

GetCols : Obtiene el nombre de las columnas de cada fila

func (*DataTable) GetIndex

func (p *DataTable) GetIndex() []string

GetIndex : Obtiene el nombre de los indices

func (*DataTable) GetRow

func (p *DataTable) GetRow(row int) (StData, error)

GetRow : Obtiene una fila X por el numero de fila

func (*DataTable) GetRows

func (p *DataTable) GetRows() []StData

GetRows : Obtiene todas las fila

func (*DataTable) GetTable

func (p *DataTable) GetTable() string

GetTable : Obtiene el nombre de la tabla

func (*DataTable) LenIndex

func (p *DataTable) LenIndex() int

LenIndex : Obtienen la cantidad de llaves primarias para update o delete

func (*DataTable) LenRows

func (p *DataTable) LenRows() int

LenRows : Obtienen la cantidad de fila

func (*DataTable) SetTable

func (p *DataTable) SetTable(table string)

SetTable : Modifica el nombre de la tabla

func (*DataTable) ValidRow

func (p *DataTable) ValidRow() bool

ValidRow : valida si tiene filas llenadas

type StCadConect

type StCadConect struct {
	File    string `json:"filedb"  ini:"filedb"`
	Usuario string `json:"usuario" ini:"usuario"`
	Clave   string `json:"clave"   ini:"clave"`
	Nombre  string `json:"nombre"  ini:"nombre"`
	Tipo    string `json:"tipo"    ini:"tipo"`
	Host    string `json:"host"    ini:"host"`
	Puerto  int    `json:"puerto"  ini:"puerto"`
	Sslmode string `json:"sslmode" ini:"sslmode"`
}

StCadConect : Estructura para generar la cadena de conexiones de base de datos

func DecripConect added in v1.7.8

func DecripConect(data []byte, pass string) (StCadConect, error)

DecripConect : desencripta una conexion de base de datos .ini con una encriptacion AES256 creada del mismo paquete utility

func (*StCadConect) ToString

func (p *StCadConect) ToString() string

ToString : Muestra la estructura StCadConect

func (*StCadConect) Trim

func (p *StCadConect) Trim()

Trim : Elimina los espacio en cualquier campo string

func (*StCadConect) ValidCad

func (p *StCadConect) ValidCad() bool

ValidCad : valida la cadena de conexion capturada

type StConect

type StConect struct {
	Conexion StCadConect

	DBGO   *sqlx.DB
	DBTx   *sql.Tx
	DBStmt *sql.Stmt

	Queries map[string]string
	// contains filtered or unexported fields
}

StConect : Estructura que contiene la conexion a x tipo de base de datos.

func (*StConect) Close

func (p *StConect) Close() error

Close : cierra las conexiones de base de datos intanciadas

func (*StConect) Con

func (p *StConect) Con() error

Con : Crear una conexion ala base de datos configurada en la cadena.

func (*StConect) ConfigDBX added in v1.7.8

func (p *StConect) ConfigDBX(path, pass string) error

ConfigDBX : Lee las configuraciones de conexion mediante un archivo encriptado .dbx este se debe enviar la clave

func (*StConect) ConfigENV

func (p *StConect) ConfigENV() error

ConfigENV : lee las configuracion de la base de datos mediante variables de entorno Ejemplo: ENV USUARIO = prueba ENV CLAVE = prueba ENV NOMBRE = prueba ENV TIPO = POST ENV PUERTO = 5433 ENV HOST = Localhost ENV SSLMODE = opcional ENV FILEDB = opcional sqllite

func (*StConect) ConfigINI

func (p *StConect) ConfigINI(PathINI string) error

ConfigINI : Lee las configuraciones de conexion mediante un .ini

Ejemplo:

database

usuario = prueba

clave = prueba

nombre = prueba

tipo = POST

puerto = 5433

host = Localhost

sslmode = opcional

filedb = opcional sqllite

func (*StConect) ConfigJSON

func (p *StConect) ConfigJSON(PathJSON string) error

ConfigJSON : Lee las configuraciones de conexion mediante un .json

Ejemplo:

{

"usuario":"prueba",
"clave":"prueba",
"nombre":"prueba",
"tipo":"POST",
"host":"Localhost",
"puerto":3000,
"sslmode":"",
"filedb":""

}

func (*StConect) ConfigURL

func (p *StConect) ConfigURL(url string)

ConfigURL : captura una conexion nativa de drive para base de datos

func (*StConect) Exec

func (p *StConect) Exec(Data []StQuery, indConect bool) error

Exec :Ejecuta una accion de base de datos nativa con rollback

func (*StConect) ExecBackup

func (p *StConect) ExecBackup() error

ExecBackup : ejecuta el querie backup

func (*StConect) ExecDatatable

func (p *StConect) ExecDatatable(data DataTable, acc string, indConect bool) error

ExecDatatable : ejecuta a nivel de base de datos una accione datable esta puede ser INSERT,DELETE,UPDATE

func (*StConect) ExecNative added in v1.7.8

func (p *StConect) ExecNative(sql string, indConect bool, args ...interface{}) (sql.Result, error)

ExecNative : ejecuta la funcion nativa del paquete sql

func (*StConect) ExecOne added in v1.7.8

func (p *StConect) ExecOne(Data StQuery, indConect bool) error

ExecOne :Ejecuta un StQuery navito haciendo rollback con un error

func (*StConect) ExecValid

func (p *StConect) ExecValid(Data []StQuery, tipacc string) error

ExecValid :Ejecuta una accion de base de datos nativa con rollback y validacion de insert e delete o que tipo de accion es

func (*StConect) Insert

func (p *StConect) Insert(Data []StQuery) error

Insert : Inserta a cualquier tabla donde esta conectado devuelve true si fue guardado o false si no guardo nada.

func (*StConect) NamedIn

func (p *StConect) NamedIn(query StQuery) (string, []interface{}, error)

NamedIn : procesa los argumentos y sql para agarrar la clausula IN

func (*StConect) Query

func (p *StConect) Query(query StQuery, cantrow int, indConect bool) ([]StData, error)

Query : Ejecuta un querie en la base de datos y

  devuelve un map dinamico para mostrar los datos donde le limitan la cantida
	de registro que debe de devolver
	indConect = true deja la conexion abierta
  Ejemplo:
  map[COD_CLI:50364481 NIS_RAD:5355046 SEC_NIS:1]

func (*StConect) QueryJSON

func (p *StConect) QueryJSON(query StQuery, cantrow int, indConect, indLimit bool) ([]byte, error)

QueryJSON : Ejecuta un querie en la base de datos y

  devuelve un json dinamico para mostrar los datos donde le limitan la cantida
	de registro que debe de devolver
	indConect = true deja la conexion abierta
	indLimit = true limite de fila si esta en false desactiva esta opcion

func (*StConect) QueryMap

func (p *StConect) QueryMap(query StQuery, cantrow int, indConect, indLimit bool) ([]StData, error)

QueryMap : Ejecuta un querie en la base de datos y

  devuelve un map dinamico para mostrar los datos donde le limitan la cantida
	de registro que debe de devolver
	indConect = true deja la conexion abierta
	indLimit = true limite de fila si esta en false desactiva esta opcion

func (*StConect) QueryNative added in v1.7.8

func (p *StConect) QueryNative(sql string, indConect bool, args ...interface{}) (*sql.Rows, error)

QueryNative : ejecuta la funcion nativa del paquete sql

func (*StConect) QueryOne added in v1.7.8

func (p *StConect) QueryOne(query StQuery, indConect bool) (StData, error)

QueryOne : Ejecuta un querie en la base de datos y devuelve un map dinamico pero solo envia una fila y no un arreglo

func (*StConect) QueryRows

func (p *StConect) QueryRows(query StQuery, indConect bool) (*sqlx.Rows, error)

QueryRows : Ejecuta un query en la base de datos y

  devuelve un puntero de *Rows de sqlx
	indConect = true deja la conexion abierta

func (*StConect) QueryStruct

func (p *StConect) QueryStruct(datadest interface{}, query StQuery, indConect bool) error

QueryStruct : Ejecuta un query en la base de datos y

  captura la data con struct
	EjecutarQueryStruct(&data,sql,true)
	indConect = true deja la conexion abierta

func (*StConect) ResetCnx

func (p *StConect) ResetCnx()

ResetCnx : Limpia la cadena de conexion

func (*StConect) SendSQL

func (p *StConect) SendSQL(code string, args map[string]interface{}) StQuery

SendSQL : envia un sql con los argumentos

func (*StConect) SetBackupScript

func (p *StConect) SetBackupScript(sql string)

SetBackupScript : setea un scrip backup para la creacion de base de datos en modelos go

func (*StConect) Test

func (p *StConect) Test() bool

Test : Valida si se puede conectar ala base de datos antes de un uso.

func (*StConect) UpdateOrDelete

func (p *StConect) UpdateOrDelete(Data []StQuery) (int64, error)

UpdateOrDelete : actualiza e elimina a cualquier tabla donde esta conectado devuelve la cantidad de filas afectadas.

func (*StConect) ValidTable

func (p *StConect) ValidTable(table string) bool

ValidTable : valida si la tabla a buscar existe

type StData

type StData map[string]interface{}

StData : Estructura que extrae los datos de una consulta de base de datos tramformandola en map

func NewStData

func NewStData(mp map[string]interface{}) StData

NewStData : crea un Stdata de un map

func (*StData) Filter

func (p *StData) Filter(keys ...string) StData

Filter : Excluye key de un map interface

func (*StData) KeyColum

func (p *StData) KeyColum() []string

KeyColum : envia las columnas que contiene la data

func (*StData) ToBool

func (p *StData) ToBool(columna string) bool

ToBool : Convierte el valor del map interface{} a bool.

func (*StData) ToDate added in v1.7.8

func (p *StData) ToDate(columna string) (time.Time, error)

ToDate : Convierte el valor del map interface{} a time.

func (*StData) ToFloat added in v1.7.8

func (p *StData) ToFloat(columna string) (float32, error)

ToFloat : Convierte el valor del map interface{} a float.

func (*StData) ToFloat64 added in v1.7.8

func (p *StData) ToFloat64(columna string) (float64, error)

ToFloat64 : Convierte el valor del map interface{} a float.

func (*StData) ToInt

func (p *StData) ToInt(columna string) (int, error)

ToInt : Convierte el valor del map interface{} a int.

func (*StData) ToInt32 added in v1.7.8

func (p *StData) ToInt32(columna string) int32

ToInt32 : Convierte el valor del map interface{} a int32.

func (*StData) ToInt64

func (p *StData) ToInt64(columna string) (int64, error)

ToInt64 : Convierte el valor del map interface{} a int64.

func (*StData) ToJSON

func (p *StData) ToJSON() ([]byte, error)

ToJSON : Convierte la estructura StData en JSON para envios externos a rest api.

func (*StData) ToString

func (p *StData) ToString(columna string) (string, error)

ToString : Convierte el valor del map interface{} a string.

func (*StData) UpperKey

func (p *StData) UpperKey() StData

UpperKey : coloca en mayusculas todas las keys

func (*StData) ValidColum

func (p *StData) ValidColum(col string) bool

ValidColum : valida si un campo existe

type StExt added in v1.7.8

type StExt struct {
	SQLIn        StQuery
	TableNameOut string
	Index        []string
}

StExt : extractores para la extructura merge y datatable

type StMerge added in v1.7.8

type StMerge struct {
	CnxIn     StConect
	CnxOut    StConect
	ItemsExt  []StExt
	InDelIn   bool
	InDelOut  bool
	DelsqlIn  []StQuery
	DelsqlOut []StQuery
	//AccMerge : procesa la accion para hacer el merge de la base de datos
	AccMerge func(CnxIn, CnxOut StConect) error
}

StMerge : estructura para crear merge para servicio

func (*StMerge) LoadDataIn added in v1.7.8

func (p *StMerge) LoadDataIn() ([]DataTable, error)

LoadDataIn : carga los datos de la base de datos de entrada

func (*StMerge) Process added in v1.7.8

func (p *StMerge) Process() error

Process : proceso de merge en los etl

type StQuery

type StQuery struct {
	Querie string `json:"querie"`
	Args   map[string]interface{}
}

StQuery : Estructura para ejecutar query de base de datos.

type StSQLData

type StSQLData struct {
	Data []byte `db:"data"`
}

StSQLData : Estructura para manipulacion de columnas JSON esto funciona para capturar una sola respuesta a nivel de solucion

ejemplo
select getdata() as data --> donde data deve ser un json o []byte

func (*StSQLData) ToJSON

func (p *StSQLData) ToJSON() utl.JSON

ToJSON : Convierte un StSQLData a utl.JSON

func (*StSQLData) ToMap

func (p *StSQLData) ToMap() ([]map[string]interface{}, error)

ToMap : Convierte un StSQLData a map interface

func (*StSQLData) Unmarshal

func (p *StSQLData) Unmarshal(v interface{}) error

Unmarshal : captura una structura

type TpCore

type TpCore string

TpCore : Enums de tipos de datos para los sql e validacion

Jump to

Keyboard shortcuts

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