godataset

package module
v1.0.4 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2025 License: MIT Imports: 21 Imported by: 0

README

GoDataset

GODataset - Biblioteca Go para facilitar a interação com bancos de dados e manipulação de dados via dataset, inspirada em conceitos de datasets de outras linguagens, mas com a simplicidade e performance do Go.

Sumário

Descrição

O GoDataset abstrai operações comuns de manipulação de dados, permitindo trabalhar com registros, campos e navegação de forma eficiente. Ideal para aplicações que precisam de flexibilidade e produtividade ao lidar com diferentes bancos de dados.

Instalação

Requer Go 1.18 ou superior.

go get github.com/seuusuario/godataset

Exemplo de Uso

connectStr := "oracle://erp:pass123@DESKTOP-DEV:1521/xe"

db, err := NewConnection(DialectType(ORACLE), connectStr)
if err != nil {
    log.Fatal(err)
}
defer db.Close()

ds := NewDataSet(db)
err = ds.
    AddSql("SELECT ID, NAME FROM PEOPLE").
    AddSql("WHERE ID BETWEEN :idStart AND :idEnd").
    SetInputParam("idStart", 20).
    SetInputParam("idEnd", 100).
    Open()
if err != nil {
    log.Fatal(err)
}

fmt.Println(ds.Count())
ds.First()
for !ds.Eof() {
    fmt.Println(ds.FieldByName("NAME").AsString())
    ds.Next()
}

Principais Métodos

  • NewDataSet(db *Conn) *DataSet
  • NewDataSetTx(tx *Transaction) *DataSet
  • (*DataSet) AddSql(sql string) *DataSet
  • (*DataSet) SetInputParam(paramName string, paramValue any) *DataSet
  • (*DataSet) Open() error
  • (*DataSet) Exec() (sql.Result, error)
  • (*DataSet) FieldByName(fieldName string) *Field
  • (*DataSet) First(), Next(), Previous(), Last()
  • (*DataSet) Eof() bool, Bof() bool, IsEmpty() bool, Count() int
  • (*DataSet) ToStruct(model any) error

Veja a documentação completa no código-fonte para todos os métodos disponíveis.

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.

  1. Fork este repositório
  2. Crie uma branch para sua feature (git checkout -b feature/nome-feature)
  3. Commit suas alterações (git commit -am 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nome-feature)
  5. Abra um Pull Request

Referências

Go Reference

Licença

Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Autor

Carlos Fitl


Sinta-se à vontade para sugerir melhorias ou reportar problemas!

Documentation

Index

Constants

View Source
const (
	FIREBIRD   DialectType = 1
	INTERBASE              = 2
	MYSQL                  = 3
	ORACLE                 = 4
	POSTGRESQL             = 5
	SQLSERVER              = 6
	SQLITE                 = 7
)

Variables

This section is empty.

Functions

func ClearSlice

func ClearSlice[S ~[]E, E any](s S) S

func GetApplicationName

func GetApplicationName() string

func IsPointer

func IsPointer(value interface{}) bool

func JoinSlice

func JoinSlice(list any) string

func StrNotEmpty

func StrNotEmpty(s string) bool

Types

type Conn

type Conn struct {
	DB      *sql.DB
	Dialect DialectType
	DSN     string
	Schema  string

	PoolSize     int           // Máximo de conexões abertas
	PoolLifetime time.Duration // Tempo máximo ocioso antes de fechar a conexão
	MaxOpenConns int           // Máximo de conexões ociosas
	ConnLifetime time.Duration // Tempo máximo de vida de uma conexão
	// contains filtered or unexported fields
}

func NewConnection

func NewConnection(dialect DialectType, dsn string) (*Conn, error)

func NewConnectionFirebird

func NewConnectionFirebird(dsn string) (*Conn, error)

func NewConnectionInterbase

func NewConnectionInterbase(dsn string) (*Conn, error)

func NewConnectionMySql

func NewConnectionMySql(dsn string) (*Conn, error)

func NewConnectionOracle

func NewConnectionOracle(dsn string) (*Conn, error)

func NewConnectionPostgres

func NewConnectionPostgres(dsn string) (*Conn, error)

func NewConnectionSqLite

func NewConnectionSqLite(dsn string) (*Conn, error)

func NewConnectionSqlServer

func NewConnectionSqlServer(dsn string) (*Conn, error)

func (*Conn) AddOracleSessionParam

func (co *Conn) AddOracleSessionParam(key, value string) error

func (*Conn) Close

func (co *Conn) Close()

func (*Conn) CreateContext

func (co *Conn) CreateContext(ctx context.Context) (context.Context, context.CancelFunc)

func (*Conn) DisableLog

func (co *Conn) DisableLog()

func (*Conn) EnableLog

func (co *Conn) EnableLog()

func (*Conn) Exec

func (co *Conn) Exec(sql string, arg ...any) (sql.Result, error)

func (*Conn) NewDataSet

func (co *Conn) NewDataSet() *DataSet

func (*Conn) Open

func (co *Conn) Open() error

func (*Conn) Ping

func (co *Conn) Ping() error

func (*Conn) SetConnLifeTime

func (co *Conn) SetConnLifeTime(d time.Duration)

SetConnLifeTime Tempo de vida das conexões

func (*Conn) SetMaxOpenConns

func (co *Conn) SetMaxOpenConns(n int)

SetMaxOpenConns Maximo de conexões abertas

func (*Conn) SetPoolLifeTime

func (co *Conn) SetPoolLifeTime(d time.Duration)

SetPoolLifeTime Tempo de vida do Pool de conexões

func (*Conn) SetSchema

func (co *Conn) SetSchema(s string)

func (*Conn) SetSizePool

func (co *Conn) SetSizePool(n int)

SetSizePool Tamanho maximo do Pool de conexão

func (*Conn) StartTransaction

func (co *Conn) StartTransaction() (*Transaction, error)

func (*Conn) StartTransactionContext

func (co *Conn) StartTransactionContext(ctx context.Context) (*Transaction, error)

type DataSet

type DataSet struct {
	Connection      *Conn
	Tx              *Transaction
	Ctx             context.Context
	Sql             Strings
	Fields          *Fields
	Params          *Params
	Macros          *Macros
	Rows            []Row
	Index           int
	Recno           int
	MasterSource    *MasterSource
	IndexFieldNames string
	Silent          bool
}

func NewDataSet

func NewDataSet(db *Conn) *DataSet

func NewDataSetTx

func NewDataSetTx(tx *Transaction) *DataSet

func (*DataSet) AddContext

func (ds *DataSet) AddContext(ctx context.Context) *DataSet

func (*DataSet) AddDetailFields

func (ds *DataSet) AddDetailFields(fields ...string) *DataSet

func (*DataSet) AddMasterFields

func (ds *DataSet) AddMasterFields(fields ...string) *DataSet

func (*DataSet) AddMasterSource

func (ds *DataSet) AddMasterSource(dataSet *DataSet) *DataSet

func (*DataSet) AddSql

func (ds *DataSet) AddSql(sql string) *DataSet

func (*DataSet) Bof

func (ds *DataSet) Bof() bool

func (*DataSet) ClearDetailFields

func (ds *DataSet) ClearDetailFields() *DataSet

func (*DataSet) ClearMasterFields

func (ds *DataSet) ClearMasterFields() *DataSet

func (*DataSet) Close

func (ds *DataSet) Close()

func (*DataSet) CloseNoClearSQL

func (ds *DataSet) CloseNoClearSQL()

func (*DataSet) Count

func (ds *DataSet) Count() int

func (*DataSet) Delete

func (ds *DataSet) Delete() (int64, error)

func (*DataSet) DeleteContext

func (ds *DataSet) DeleteContext(context context.Context) (int64, error)

func (*DataSet) Eof

func (ds *DataSet) Eof() bool

func (*DataSet) Exec

func (ds *DataSet) Exec() (sql.Result, error)

func (*DataSet) ExecBatch

func (ds *DataSet) ExecBatch(size int) error

func (*DataSet) ExecContext

func (ds *DataSet) ExecContext(context context.Context) (sql.Result, error)

func (*DataSet) FieldByName

func (ds *DataSet) FieldByName(fieldName string) *Field

func (*DataSet) First

func (ds *DataSet) First()

func (*DataSet) Free

func (ds *DataSet) Free()

func (*DataSet) GetMacros

func (ds *DataSet) GetMacros() []any

func (*DataSet) GetParams

func (ds *DataSet) GetParams() []any

func (*DataSet) GetParamsBatch

func (ds *DataSet) GetParamsBatch(index int) []any

func (*DataSet) GetSql

func (ds *DataSet) GetSql() (sql string)

func (*DataSet) GetSqlMasterDetail

func (ds *DataSet) GetSqlMasterDetail() (vsql string)

func (*DataSet) GetValue

func (ds *DataSet) GetValue(field *Field, fieldType any) any

func (*DataSet) IsEmpty

func (ds *DataSet) IsEmpty() bool

func (*DataSet) IsNotEmpty

func (ds *DataSet) IsNotEmpty() bool

func (*DataSet) Last

func (ds *DataSet) Last()

func (*DataSet) Locate

func (ds *DataSet) Locate(key string, value any) bool

func (*DataSet) MacroByName

func (ds *DataSet) MacroByName(macroName string) *Macro

func (*DataSet) Next

func (ds *DataSet) Next()

func (*DataSet) Open

func (ds *DataSet) Open() error

func (*DataSet) OpenContext

func (ds *DataSet) OpenContext(context context.Context) error

func (*DataSet) ParamByName

func (ds *DataSet) ParamByName(paramName string) *Param

func (*DataSet) Prepare

func (ds *DataSet) Prepare() error

func (*DataSet) Previous

func (ds *DataSet) Previous()

func (*DataSet) PrintParam

func (ds *DataSet) PrintParam()

func (*DataSet) SetInOutputParam

func (ds *DataSet) SetInOutputParam(paramName string, paramValue any) *DataSet

func (*DataSet) SetInOutputParamBlob

func (ds *DataSet) SetInOutputParamBlob(paramName string, paramValue []byte) *DataSet

func (*DataSet) SetInOutputParamClob

func (ds *DataSet) SetInOutputParamClob(paramName string, paramValue string) *DataSet

func (*DataSet) SetInputParam

func (ds *DataSet) SetInputParam(paramName string, paramValue any) *DataSet

func (*DataSet) SetInputParamBlob

func (ds *DataSet) SetInputParamBlob(paramName string, paramValue []byte) *DataSet

func (*DataSet) SetInputParamClob

func (ds *DataSet) SetInputParamClob(paramName string, paramValue string) *DataSet

func (*DataSet) SetMacro

func (ds *DataSet) SetMacro(macroName string, macroValue any) *DataSet

func (*DataSet) SetOutputParam

func (ds *DataSet) SetOutputParam(paramName string, paramValue any) *DataSet

func (*DataSet) SetOutputParamSlice

func (ds *DataSet) SetOutputParamSlice(params ...ParamOut) *DataSet

func (*DataSet) SqlParam

func (ds *DataSet) SqlParam() string

func (*DataSet) ToStruct

func (ds *DataSet) ToStruct(model any) error

func (*DataSet) ToStructJson

func (ds *DataSet) ToStructJson(model any) ([]byte, error)

type DataType

type DataType int
const (
	Text     DataType = 0
	Integer  DataType = 1
	Float    DataType = 2
	DateTime DataType = 3
	Boolean  DataType = 4
)

func (*DataType) IntToDataType

func (dt *DataType) IntToDataType(value int) (DataType, error)

type DialectType

type DialectType uint8

func (DialectType) String

func (d DialectType) String() string

type Field

type Field struct {
	Owner *Fields
	Name  string

	Caption    string
	DataType   *sql.ColumnType
	IDataType  *DataType
	Precision  int64
	Scale      int64
	DataMask   string
	BoolValue  bool
	TrueValue  string
	FalseValue string
	Visible    bool
	AcceptNull bool
	QuoteNull  bool
	OmitNull   bool
	StrNull    string
	Order      int
	Index      int
	// contains filtered or unexported fields
}

func NewField

func NewField(name string) *Field

func (*Field) AsBool

func (field *Field) AsBool() bool

func (*Field) AsBoolNil

func (field *Field) AsBoolNil() *bool

func (*Field) AsByte

func (field *Field) AsByte() []byte

func (*Field) AsByteNil

func (field *Field) AsByteNil() *[]byte

func (*Field) AsDateTime

func (field *Field) AsDateTime() time.Time

func (*Field) AsDateTimeNil

func (field *Field) AsDateTimeNil() *time.Time

func (*Field) AsFloat

func (field *Field) AsFloat() float32

func (*Field) AsFloat64

func (field *Field) AsFloat64() float64

func (*Field) AsFloat64Nil

func (field *Field) AsFloat64Nil() *float64

func (*Field) AsFloatNil

func (field *Field) AsFloatNil() *float32

func (*Field) AsInt

func (field *Field) AsInt() int

func (*Field) AsInt8

func (field *Field) AsInt8() int8

func (*Field) AsInt8Nil

func (field *Field) AsInt8Nil() *int8

func (*Field) AsInt16

func (field *Field) AsInt16() int16

func (*Field) AsInt16Nil

func (field *Field) AsInt16Nil() *int16

func (*Field) AsInt32

func (field *Field) AsInt32() int32

func (*Field) AsInt32Nil

func (field *Field) AsInt32Nil() *int32

func (*Field) AsInt64

func (field *Field) AsInt64() int64

func (*Field) AsInt64Nil

func (field *Field) AsInt64Nil() *int64

func (*Field) AsIntNil

func (field *Field) AsIntNil() *int

func (*Field) AsString

func (field *Field) AsString() string

func (*Field) AsStringNil

func (field *Field) AsStringNil() *string

func (*Field) AsValue

func (field *Field) AsValue() any

func (*Field) IsNotNull

func (field *Field) IsNotNull() bool

func (*Field) IsNull

func (field *Field) IsNull() bool

type Fields

type Fields struct {
	Owner *DataSet
	List  []*Field
}

func NewFields

func NewFields() *Fields

func (*Fields) Add

func (fd *Fields) Add(fieldName string) (field *Field)

func (*Fields) Clear

func (fd *Fields) Clear() *Fields

func (*Fields) Count

func (fd *Fields) Count() int

func (*Fields) FieldByName

func (fd *Fields) FieldByName(fieldName string) *Field

func (*Fields) FindFieldByName

func (fd *Fields) FindFieldByName(fieldName string) *Field

type Lob

type Lob struct {
	io.Reader
	IsClob bool
}

type Macro

type Macro struct {
	Name  string
	Value *Variant
}

func (*Macro) AsString

func (macro *Macro) AsString() string

func (*Macro) AsValue

func (macro *Macro) AsValue() *Variant

type Macros

type Macros struct {
	Owner *DataSet
	List  []*Macro
}

func NewMacros

func NewMacros() *Macros

func (*Macros) Clear

func (m *Macros) Clear() *Macros

func (*Macros) Count

func (m *Macros) Count() int

func (*Macros) FindMacroByName

func (m *Macros) FindMacroByName(macroName string) *Macro

func (*Macros) MacroByName

func (m *Macros) MacroByName(macroName string) *Macro

func (*Macros) SetMacro

func (m *Macros) SetMacro(macroName string, macroValue any) *Macros

type MasterSource

type MasterSource struct {
	DataSource   *DataSet
	DetailFields []string
	MasterFields []string
}

func NewMasterSource

func NewMasterSource() *MasterSource

func (*MasterSource) AddDetailFields

func (ms *MasterSource) AddDetailFields(fields ...string) *MasterSource

func (*MasterSource) AddMasterFields

func (ms *MasterSource) AddMasterFields(fields ...string) *MasterSource

func (*MasterSource) AddMasterSource

func (ms *MasterSource) AddMasterSource(dataSet *DataSet) *MasterSource

func (*MasterSource) And

func (ms *MasterSource) And() *DataSet

func (*MasterSource) Clear

func (ms *MasterSource) Clear()

func (*MasterSource) ClearDetailFields

func (ms *MasterSource) ClearDetailFields()

func (*MasterSource) ClearMasterFields

func (ms *MasterSource) ClearMasterFields()

func (*MasterSource) CountDetailFields

func (ms *MasterSource) CountDetailFields() int

func (*MasterSource) CountMasterFields

func (ms *MasterSource) CountMasterFields() int

type Param

type Param struct {
	Owner     *Params
	Name      string
	Value     *Variant
	ParamType ParamType
	DataType  reflect.Type
	Values    []*Variant
}

func NewParam

func NewParam(paramName string, paramType ParamType) *Param

func (*Param) AsBool

func (param *Param) AsBool() bool

func (*Param) AsDateTime

func (param *Param) AsDateTime() time.Time

func (*Param) AsFloat

func (param *Param) AsFloat() float32

func (*Param) AsFloat64

func (param *Param) AsFloat64() float64

func (*Param) AsInt

func (param *Param) AsInt() int

func (*Param) AsInt8

func (param *Param) AsInt8() int8

func (*Param) AsInt16

func (param *Param) AsInt16() int16

func (*Param) AsInt32

func (param *Param) AsInt32() int32

func (*Param) AsInt64

func (param *Param) AsInt64() int64

func (*Param) AsString

func (param *Param) AsString() string

func (*Param) AsValue

func (param *Param) AsValue() *Variant

type ParamOut

type ParamOut struct {
	Name string
	Dest any
}

type ParamType

type ParamType int
const (
	IN    ParamType = 0
	OUT   ParamType = 1
	INOUT ParamType = 2
)

type Params

type Params struct {
	Owner     *DataSet
	BatchSize int
	List      []*Param
}

func NewParams

func NewParams() *Params

func (*Params) Add

func (p *Params) Add(paramName string) *Param

func (*Params) Clear

func (p *Params) Clear() *Params

func (*Params) Count

func (p *Params) Count() int

func (*Params) FindParamByName

func (p *Params) FindParamByName(paramName string) *Param

func (*Params) ParamByName

func (p *Params) ParamByName(paramName string) *Param

func (*Params) PrintParam

func (p *Params) PrintParam()

func (*Params) SetInOutputParam

func (p *Params) SetInOutputParam(paramName string, paramValue any) *Params

func (*Params) SetInOutputParamBlob

func (p *Params) SetInOutputParamBlob(paramName string, paramValue []byte) *Params

func (*Params) SetInOutputParamClob

func (p *Params) SetInOutputParamClob(paramName string, paramValue string) *Params

func (*Params) SetInputParam

func (p *Params) SetInputParam(paramName string, paramValue any) *Params

func (*Params) SetInputParamBlob

func (p *Params) SetInputParamBlob(paramName string, paramValue []byte) *Params

func (*Params) SetInputParamClob

func (p *Params) SetInputParamClob(paramName string, paramValue string) *Params

func (*Params) SetOutputParam

func (p *Params) SetOutputParam(paramName string, paramValue any) *Params

func (*Params) SetOutputParamSlice

func (p *Params) SetOutputParamSlice(params ...ParamOut) *Params

func (*Params) SetParam

func (p *Params) SetParam(paramName string, paramValue any, paramType ParamType) *Params

func (*Params) SetParamBlob

func (p *Params) SetParamBlob(paramName string, paramValue []byte, paramType ParamType) *Params

func (*Params) SetParamClob

func (p *Params) SetParamClob(paramName string, paramValue string, paramType ParamType) *Params

type Row

type Row struct {
	List map[string]Variant
}

func NewRow

func NewRow() Row

func (*Row) Clear

func (r *Row) Clear() *Row

type Strings

type Strings struct {
	Items []string
}

func New

func New() *Strings

func (*Strings) Add

func (s *Strings) Add(value string) *Strings

func (*Strings) AddStrings

func (s *Strings) AddStrings(value *Strings)

func (*Strings) Append

func (s *Strings) Append(value string) *Strings

func (*Strings) Clear

func (s *Strings) Clear() *Strings

func (*Strings) Count

func (s *Strings) Count() int

func (*Strings) Replace

func (s *Strings) Replace(index int, value string) *Strings

func (*Strings) Text

func (s *Strings) Text() string

type Transaction

type Transaction struct {
	Conn *Conn

	Ctx context.Context
	// contains filtered or unexported fields
}

func NewTransaction

func NewTransaction(conn *Conn) (*Transaction, error)

func NewTransactionCtx

func NewTransactionCtx(conn *Conn, ctx context.Context) (*Transaction, error)

func (*Transaction) Commit

func (t *Transaction) Commit() error

func (*Transaction) NewDataSet

func (t *Transaction) NewDataSet() *DataSet

func (*Transaction) Rollback

func (t *Transaction) Rollback() error

type Value

type Value interface{ *Variant | Variant }

type Variant

type Variant struct {
	IDataType *DataType
	Value     any
	Silent    bool
}

func (Variant) AsBool

func (v Variant) AsBool() bool

func (Variant) AsBoolNil

func (v Variant) AsBoolNil() *bool

func (Variant) AsByte

func (v Variant) AsByte() []byte

func (Variant) AsByteNil

func (v Variant) AsByteNil() *[]byte

func (Variant) AsDateTime

func (v Variant) AsDateTime() time.Time

func (Variant) AsDateTimeNil

func (v Variant) AsDateTimeNil() *time.Time

func (Variant) AsFloat

func (v Variant) AsFloat() float32

func (Variant) AsFloat64

func (v Variant) AsFloat64() float64

func (Variant) AsFloat64Nil

func (v Variant) AsFloat64Nil() *float64

func (Variant) AsFloatNil

func (v Variant) AsFloatNil() *float32

func (Variant) AsInt

func (v Variant) AsInt() int

func (Variant) AsInt8

func (v Variant) AsInt8() int8

func (Variant) AsInt8Nil

func (v Variant) AsInt8Nil() *int8

func (Variant) AsInt16

func (v Variant) AsInt16() int16

func (Variant) AsInt16Nil

func (v Variant) AsInt16Nil() *int16

func (Variant) AsInt32

func (v Variant) AsInt32() int32

func (Variant) AsInt32Nil

func (v Variant) AsInt32Nil() *int32

func (Variant) AsInt64

func (v Variant) AsInt64() int64

func (Variant) AsInt64Nil

func (v Variant) AsInt64Nil() *int64

func (Variant) AsIntNil

func (v Variant) AsIntNil() *int

func (Variant) AsString

func (v Variant) AsString() string

func (Variant) AsStringNil

func (v Variant) AsStringNil() *string

func (Variant) AsValue

func (v Variant) AsValue() any

func (Variant) IsNotNull

func (v Variant) IsNotNull() bool

func (Variant) IsNull

func (v Variant) IsNull() bool

func (Variant) SetSilent

func (v Variant) SetSilent(value bool) Variant

Jump to

Keyboard shortcuts

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