jdb

package
v1.0.6 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2025 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PRIMARYKEY    = "id"
	PK            = PRIMARYKEY
	KEY           = PRIMARYKEY
	SOURCE        = "source"
	INDEX         = "index"
	PROJECT       = "project_id"
	CREATED_AT    = "created_at"
	UPDATED_AT    = "update_at"
	STATUS        = "status_id"
	SYSID         = "jdbid"
	CREATED_TO    = "created_to"
	UPDATED_TO    = "updated_to"
	FULLTEXT      = "fulltext"
	HISTORY_INDEX = "hindex"
)
View Source
const (
	MSG_DRIVER_NOT_FOUND         = "Driver not found (%s)"
	MSG_DRIVER_NOT_DEFINED       = "Driver not defined"
	MSS_PARAM_REQUIRED           = "Parámetro requerido (%s)"
	MSG_DATABASE_NOT_FOUND       = "Database not found (%s)"
	MSG_DATABASE_IS_REQUIRED     = "Database is required"
	MSG_SCHEMA_NOT_FOUND         = "Schema not found (%s)"
	MSG_QUERY_FAILED             = "Query failed: %s\nSQL: %s"
	MSG_MODEL_NOT_FOUND          = "Model not found (%s)"
	MSG_MODEL_REQUIRED           = "Model is required"
	MSG_QUERY_EMPTY              = "Query is empty"
	MSG_QUERY_FROM_REQUIRED      = "Query 'from' is required"
	MSG_SYSTEMKEYFIELD_NOT_FOUND = "SystemKeyField not found"
	MSG_PRIMARYKEY_NOT_FOUND     = "PrimaryKey not found"
	MSG_NOT_DATA                 = "No data"
	MSG_NOT_INSERT_DATA          = "No insert data"
	MSG_NOT_UPDATE_DATA          = "No update data"
	MSG_NOT_DELETE_DATA          = "No delete data"
	MSG_KEY_NOT_FOUND            = "Key not found"
	MSG_HISTORY_NOT_DEFINED      = "History not defined"
	MSG_HISTORY_NOT_FOUND        = "History not found"
	MSG_UNDO_NOT_DEFINED         = "Undo record not defined"
	MSG_UNDO_KEY_NOT_DEFINED     = "Undo key not defined"
	MSG_COMMAND_NOT_FOUND        = "Command not found"
)

Variables

View Source
var (
	Postgres = "postgres"
	SqlLite  = "sqlite"
	Josefine = "josefine"
)
View Source
var JDBS []*DB = []*DB{}

Functions

func Commands

func Commands(params et.Json) (interface{}, error)

* * Query * @param params et.Json * @return interface{}, error *

func DeleteCache added in v1.0.6

func DeleteCache(key string)

* * DeleteCache - Delete key value * @params key string * @return error *

func Describe

func Describe(name string) (et.Json, error)

* * Describe * @param name string * @return et.Json *

func EventDeleteDefault added in v1.0.5

func EventDeleteDefault(model *Model, before et.Json, after et.Json) error

func EventErrorDefault added in v1.0.6

func EventErrorDefault(model *Model, data et.Json)

func EventHistoryDefault added in v1.0.5

func EventHistoryDefault(model *Model, before et.Json, after et.Json) error

func EventInsertDefault added in v1.0.5

func EventInsertDefault(model *Model, before et.Json, after et.Json) error

func EventUpdateDefault added in v1.0.5

func EventUpdateDefault(model *Model, before et.Json, after et.Json) error

func GetCache added in v1.0.6

func GetCache(key string) et.KeyValue

* * GetCache - Get key value * @params key string * @return et.KeyValue *

func InitCacheEvents added in v1.0.6

func InitCacheEvents()

func Name

func Name(name string) string

func NewVmj added in v1.0.5

func NewVmj(model *Model) *goja.Runtime

func Query

func Query(params et.Json) (interface{}, error)

* * Query * @param params et.Json * @return interface{}, error *

func Register

func Register(name string, driver func() Driver)

* * SetDriver *

func RowsToItem

func RowsToItem(rows *sql.Rows) et.Item

* * RowsToItem return a item from a sql rows * @param rows *sql.Rows * @return et.Item *

func RowsToItems

func RowsToItems(rows *sql.Rows) et.Items

* * RowsToItems return a items from a sql rows * @param rows *sql.Rows * @return et.Items *

func SQLDDL

func SQLDDL(sql string, args ...any) string

* * SQLDDL return a sql string with the args * @param sql string * @param args ...any * @return string *

func SQLParse

func SQLParse(sql string, args ...any) string

* * SQLParse return a sql string with the args * @param sql string * @param args ...any * @return string *

func SQLQuote

func SQLQuote(sql string) string

* * SQLQuote return a sql cuote string * @param sql string * @return string *

func SetCache added in v1.0.6

func SetCache(key string, value string, expiration time.Duration)

* * SetCache - Set key value * @params key string, value string, expiration time.Duration * @return error *

func SourceToItem

func SourceToItem(source string, rows *sql.Rows) et.Item

* * SourceToItem return a item from a sql rows and source field * @param source string * @param rows *sql.Rows * @return et.Items *

func SourceToItems added in v1.0.5

func SourceToItems(source string, rows *sql.Rows) et.Items

* * SourceToItems return a items from a sql rows and source field * @param source string * @param rows *sql.Rows * @return et.Items *

func TableName added in v1.0.3

func TableName(schema *Schema, name string) string

Types

type Adapter added in v1.0.3

type Adapter interface{}

type Agregation

type Agregation struct {
	Agregation string
	// contains filtered or unexported fields
}

type Cache added in v1.0.6

type Cache struct {
	Id     string            `json:"id"`
	Values map[string][]byte `json:"_"`

	Db *DB `json:"-"`
	// contains filtered or unexported fields
}

func (*Cache) Delete added in v1.0.6

func (s *Cache) Delete(key string)

* * Delete * @param key string *

func (*Cache) Get added in v1.0.6

func (s *Cache) Get(key string) []byte

* * Get * @param key string * @return []byte *

func (*Cache) Set added in v1.0.6

func (s *Cache) Set(key string, value []byte, expiration time.Duration) []byte

* * Set * @param key string, value []byte * @return []byte *

type Column

type Column struct {
	Model             *Model            `json:"-"`
	Source            *Column           `json:"-"`
	Name              string            `json:"name"`
	Description       string            `json:"description"`
	TypeColumn        TypeColumn        `json:"type_column"`
	TypeData          TypeData          `json:"type_data"`
	Default           interface{}       `json:"default"`
	Max               float64           `json:"max"`
	Min               float64           `json:"min"`
	Hidden            bool              `json:"hidden"`
	Detail            *Relation         `json:"detail"`
	Rollup            *Rollup           `json:"rollup"`
	FullText          *FullText         `json:"columns"`
	GeneratedFunction GeneratedFunction `json:"-"`
	Values            []interface{}     `json:"values"`
}

func (*Column) DefaultQuote

func (s *Column) DefaultQuote() interface{}

* * DefaultQuote * @return interface{} *

func (*Column) DefaultValue

func (s *Column) DefaultValue() interface{}

* * DefaultValue * @return interface{} *

func (*Column) Describe

func (s *Column) Describe() et.Json

* * Describe * @return et.Json *

func (*Column) GetField

func (s *Column) GetField() *Field

* * GetField * @return *Field *

func (*Column) Idx added in v1.0.6

func (s *Column) Idx() int

* * Idx * @return int *

type ColumnField

type ColumnField string
var (
	IndexField      ColumnField = INDEX
	SourceField     ColumnField = SOURCE
	ProjectField    ColumnField = PROJECT
	CreatedAtField  ColumnField = CREATED_AT
	UpdatedAtField  ColumnField = UPDATED_AT
	StateField      ColumnField = STATUS
	PrimaryKeyField ColumnField = PRIMARYKEY
	SystemKeyField  ColumnField = SYSID
	CreatedToField  ColumnField = CREATED_TO
	UpdatedToField  ColumnField = UPDATED_TO
	FullTextField   ColumnField = FULLTEXT
)

func (ColumnField) TypeData

func (s ColumnField) TypeData() TypeData

type Command

type Command struct {
	*QlWhere
	Command TypeCommand
	Db      *DB
	From    *Model
	Data    []et.Json
	Values  []map[string]*Field
	Undo    et.Json
	Sql     string
	Result  et.Items
}

func NewCommand

func NewCommand(model *Model, data []et.Json, command TypeCommand) *Command

* * NewCommand * @param model *Model * @param data []et.Json * @param command TypeCommand * @return *Command *

func (*Command) And

func (s *Command) And(val string) *Command

* * And * @param val string * @return *Command *

func (*Command) Between

func (s *Command) Between(vals interface{}) *Command

* * Between * @param vals interface{} * @return *Command *

func (*Command) Debug

func (s *Command) Debug() *Command

* * Debug * @param v bool * @return *Command *

func (*Command) Describe

func (s *Command) Describe() et.Json

* * Describe * @return et.Json *

func (*Command) Eq

func (s *Command) Eq(val interface{}) *Command

* * Eq * @param val interface{} * @return *Command *

func (*Command) Exec

func (s *Command) Exec() (et.Items, error)

* * Exec * @return et.Items, error *

func (*Command) History

func (s *Command) History(v bool) *Command

* * History * @param v bool * @return *Command *

func (*Command) In

func (s *Command) In(val ...any) *Command

* * In * @param val ...any * @return *Command *

func (*Command) IsNull

func (s *Command) IsNull() *Command

* * IsNull * @return *Command *

func (*Command) Less

func (s *Command) Less(val interface{}) *Command

* * Less * @param val interface{} * @return *Command *

func (*Command) LessEq

func (s *Command) LessEq(val interface{}) *Command

* * LessEq * @param val interface{} * @return *Command *

func (*Command) Like

func (s *Command) Like(val interface{}) *Command

* * Like * @param val interface{} * @return *Command *

func (*Command) More

func (s *Command) More(val interface{}) *Command

* * More * @param val interface{} * @return *Command *

func (*Command) MoreEq

func (s *Command) MoreEq(val interface{}) *Command

* * MoreEq * @param val interface{} * @return *Command *

func (*Command) Neg

func (s *Command) Neg(val interface{}) *Command

* * Neg * @param val interface{} * @return *Command *

func (*Command) NotNull

func (s *Command) NotNull() *Command

* * NotNull * @return *Command *

func (*Command) One

func (s *Command) One() (et.Item, error)

* * One * @return et.Item, error *

func (*Command) Or

func (s *Command) Or(val string) *Command

* * And * @param fval string * @return *Command *

func (*Command) Search

func (s *Command) Search(language string, val interface{}) *Command

* * Search * @param language string, val interface{} * @return *Command *

func (*Command) Where

func (s *Command) Where(val string) *Command

* * Where * @param field string * @return *Command *

type Concat added in v1.0.3

type Concat map[string]interface{}

func Concatenate added in v1.0.3

func Concatenate(args ...any) Concat

type Connector

type Connector int
const (
	NoC Connector = iota
	And
	Or
)

func (Connector) Str

func (s Connector) Str() string

type Context added in v1.0.5

type Context struct {
	Ok      bool        `json:"ok"`
	Message Message     `json:"message"`
	Data    interface{} `json:"data"`
}

func NewContext added in v1.0.5

func NewContext(data interface{}) *Context

* * NewContext * @param data interface{} * @return *Context *

type DB

type DB struct {
	CreatedAt   time.Time          `json:"created_date"`
	UpdateAt    time.Time          `json:"update_date"`
	Id          string             `json:"id"`
	Name        string             `json:"name"`
	Description string             `json:"description"`
	Schemas     map[string]*Schema `json:"schemas"`
	UseCore     bool               `json:"use_core"`
	NodeId      int64              `json:"node_id"`
	Mode        Mode               `json:"mode"`
	Origin      string             `json:"origin"`
	// contains filtered or unexported fields
}

func ConnectTo

func ConnectTo(params et.Json) (*DB, error)

* * ConnectTo * @param params et.Json * @return *DB, error *

func GetDB

func GetDB(name string) *DB

* * GetDB * @param name string * @return *DB *

func Load

func Load() (*DB, error)

* * Load * @return *DB, error *

func NewDatabase

func NewDatabase(name, driver string) (*DB, error)

* * NewDatabase * @param driver string * @return *DB *

func (*DB) ChangePassword

func (s *DB) ChangePassword(username, password, confirmation string) error

* * ChangePassword * @return error *

func (*DB) CleanCache added in v1.0.6

func (s *DB) CleanCache() error

* * CleanCache * @return error *

func (*DB) Command

func (s *DB) Command(command *Command) (et.Items, error)

* * Command * @param command *Command * @return et.Item, error *

func (*DB) Conected

func (s *DB) Conected(params et.Json) error

* * Conected * @return bool *

func (*DB) Count

func (s *DB) Count(ql *Ql) (int, error)

* * Count * @param ql *Ql * @return int, error *

func (*DB) CreateCore added in v1.0.4

func (s *DB) CreateCore() error

* * CreateCore * @return error *

func (*DB) CreateModel added in v1.0.3

func (s *DB) CreateModel(model *Model) error

* * CreateModel * @param model *Model * @return error *

func (*DB) CreateSchema added in v1.0.3

func (s *DB) CreateSchema(name string) error

* * CreateSchema * @param name string * @return error *

func (*DB) CreateUser

func (s *DB) CreateUser(username, password, confirmation string) error

* * CreateUser * @return error *

func (*DB) CurrentSerie

func (s *DB) CurrentSerie(tag string) int64

* * CurrentSerie * @param tag string * @return int64 *

func (*DB) Data added in v1.0.5

func (s *DB) Data(source, sql string, params ...any) (et.Items, error)

* * Data * @param source string * @param sql string * @param params ...any * @return et.Item, error *

func (*DB) DeleteCache added in v1.0.6

func (s *DB) DeleteCache(key string) error

* * DeleteCache * @param key string * @return error *

func (*DB) DeleteFlow added in v1.0.6

func (s *DB) DeleteFlow(name string) error

* * DeleteFlow * @param name string * @return error *

func (*DB) DeleteKey added in v1.0.5

func (s *DB) DeleteKey(key string) error

* * DeleteKey * @param key string * @return error *

func (*DB) DeleteUser

func (s *DB) DeleteUser(username string) error

* * DeleteUser * @return error *

func (*DB) Describe

func (s *DB) Describe() et.Json

* * Describe * @return et.Json *

func (*DB) Disconected

func (s *DB) Disconected() error

* * Disconected * @return error *

func (*DB) DropModel

func (s *DB) DropModel(model *Model) error

* * DropModel * @param model *Model *

func (*DB) DropSchema

func (s *DB) DropSchema(name string) error

* * DropSchema * @param name string * @return error *

func (*DB) Exec added in v1.0.3

func (s *DB) Exec(sql string, params ...any) error

* * Exec * @param sql string * @param params ...any * @return error *

func (*DB) Exists

func (s *DB) Exists(ql *Ql) (bool, error)

* * Exists * @param ql *Ql * @return bool, error *

func (*DB) FindCache added in v1.0.6

func (s *DB) FindCache(search string, page, rows int) (et.List, error)

* * FindCache * @param search string, page int, rows int * @return et.List, error *

func (*DB) FindFlows added in v1.0.6

func (s *DB) FindFlows(search string, page, rows int) (et.List, error)

* * FindFlows * @param search string, page int, rows int * @return et.List, error *

func (*DB) FindKeys added in v1.0.5

func (s *DB) FindKeys(search string, page, rows int) (et.List, error)

* * FindKeys * @param search string * @param page int * @param rows int * @return et.List, error *

func (*DB) GetCache added in v1.0.6

func (s *DB) GetCache(key string) (et.KeyValue, error)

* * GetCache * @param key string * @return et.KeyValue, error *

func (*DB) GetFlow added in v1.0.6

func (s *DB) GetFlow(name string) (Flow, error)

* * GetFlow * @param name string * @return Flow, error *

func (*DB) GetKey added in v1.0.5

func (s *DB) GetKey(key string) (et.KeyValue, error)

* * GetKey * @param key string * @return et.KeyValue, error *

func (*DB) GetSerie

func (s *DB) GetSerie(tag string) int64

* * GetSerie * @return int64 *

func (*DB) GrantPrivileges

func (s *DB) GrantPrivileges(username, dbName string) error

* * GrantPrivileges * @return error *

func (*DB) LoadTable added in v1.0.6

func (s *DB) LoadTable(model *Model) (bool, error)

* * LoadTable * @param model *Model * @return error *

func (*DB) NextCode added in v1.0.3

func (s *DB) NextCode(tag, format string) string

* * NextCode * @param tag string * @param format string "%08v" "PREFIX-%08v-SUFFIX" * @return string *

func (*DB) One

func (s *DB) One(sql string, params ...any) (et.Item, error)

* * One * @param sql string * @param params ...any * @return et.Item, error *

func (*DB) Query

func (s *DB) Query(sql string, params ...any) (et.Items, error)

* * Query * @param sql string * @param params ...any * @return et.Items, error *

func (*DB) Select

func (s *DB) Select(ql *Ql) (et.Items, error)

* * Select * @param ql *Ql * @return et.Items, error *

func (*DB) SetCache added in v1.0.6

func (s *DB) SetCache(key string, value []byte, duration time.Duration) error

* * SetCache * @param key string, value []byte, duration time.Duration * @return error *

func (*DB) SetFlow added in v1.0.6

func (s *DB) SetFlow(name string, value []byte) error

* * SetFlow * @param name string, value []byte * @return error *

func (*DB) SetKey added in v1.0.5

func (s *DB) SetKey(key string, value []byte) error

* * SetKey * @param key string * @param value value []byte * @return error *

func (*DB) SetMain

func (s *DB) SetMain(params et.Json) error

* * SetMain * @param params et.Json * @return error *

func (*DB) SetSerie

func (s *DB) SetSerie(tag string, val int) int64

* * SetSerie * @return int64 *

type Driver

type Driver interface {
	Name() string
	Connect(params et.Json) error
	Disconnect() error
	SetMain(params et.Json) error
	// Database
	CreateDatabase(name string) error
	DropDatabase(name string) error
	// Core
	CreateCore() error
	// User
	GrantPrivileges(username, dbName string) error
	CreateUser(username, password, confirmation string) error
	ChangePassword(username, password, confirmation string) error
	DeleteUser(username string) error
	// Schema
	CreateSchema(name string) error
	DropSchema(name string) error
	// Model
	LoadTable(model *Model) (bool, error)
	CreateModel(model *Model) error
	DropModel(model *Model) error
	// Query
	Exec(sql string, arg ...any) error
	Query(sql string, arg ...any) (et.Items, error)
	One(sql string, arg ...any) (et.Item, error)
	Data(source, sql string, arg ...any) (et.Items, error)
	Select(ql *Ql) (et.Items, error)
	Count(ql *Ql) (int, error)
	Exists(ql *Ql) (bool, error)
	// Command
	Command(command *Command) (et.Items, error)
	// Series
	GetSerie(tag string) int64
	NextCode(tag, prefix string) string
	SetSerie(tag string, val int) int64
	CurrentSerie(tag string) int64
	// Key Value
	SetKey(key string, value []byte) error
	GetKey(key string) (et.KeyValue, error)
	DeleteKey(key string) error
	FindKeys(search string, page, rows int) (et.List, error)
	// Function
	SetFlow(name string, value []byte) error
	GetFlow(id string) (Flow, error)
	DeleteFlow(id string) error
	FindFlows(search string, page, rows int) (et.List, error)
	// Cache
	SetCache(key string, value []byte, duration time.Duration) error
	GetCache(key string) (et.KeyValue, error)
	DeleteCache(key string) error
	CleanCache() error
	FindCache(search string, page, rows int) (et.List, error)
}

type Event

type Event func(model *Model, before et.Json, after et.Json) error

type EventError

type EventError func(model *Model, data et.Json)

type Field

type Field struct {
	Column     *Column
	Schema     string
	Table      string
	As         string
	Name       string
	Source     string
	Agregation TypeAgregation
	Value      interface{}
	Alias      string
	Hidden     bool
	Page       int
	Rows       int
	TpResult   TypeResult
}

func GetField added in v1.0.5

func GetField(name string) *Field

* * GetField * @param name string * @return *Field *

func NewField added in v1.0.6

func NewField(column *Column) *Field

* * NewField * @param column *Column * @return *Field *

func (*Field) AsField added in v1.0.5

func (s *Field) AsField() string

* * AsField * @return string *

func (*Field) AsName added in v1.0.6

func (s *Field) AsName() string

* * AsName * @return string *

func (*Field) AsTable added in v1.0.6

func (s *Field) AsTable() string

* * AsTable * @return string *

func (*Field) Define added in v1.0.5

func (s *Field) Define() et.Json

func (*Field) Describe

func (s *Field) Describe() et.Json

* * Describe * @return et.Json *

func (*Field) SetAgregation added in v1.0.6

func (s *Field) SetAgregation(agr TypeAgregation)

type Flow added in v1.0.5

type Flow struct {
	Id          string `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description"`
	Functions   []*Function
}

func NewFlow added in v1.0.5

func NewFlow(name, description string) *Flow

* * NewFlow * @param name string * @param description string * @return *Flow *

func (*Flow) Describe added in v1.0.6

func (s *Flow) Describe() et.Json

* * Describe * @return et.Json *

func (*Flow) Rollback added in v1.0.6

func (s *Flow) Rollback(index int)

* * Rollback * @param index int *

func (*Flow) Run added in v1.0.5

func (s *Flow) Run(status chan *Context)

* * Run * @param status chan *Context *

type FullText

type FullText struct {
	Language string    `json:"language"`
	Columns  []*Column `json:"columns"`
}

type Function added in v0.0.1

type Function struct {
	Flow        *Flow
	Id          string `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description"`
	Code        string `json:"code"`
	Context     *Context
	Execute     func(chan *Context) *Context
	Rollback    func()
}

func NewFunction added in v1.0.3

func NewFunction(name, description string, execute func(chan *Context) *Context, rollback func()) *Function

* * NewFunction * @param name string, description string, execute func(chan *Context) *Context, rollback func() * @return *Function *

type GeneratedFunction

type GeneratedFunction func(col *Column, data *et.Json)

type HandlerListener added in v1.0.4

type HandlerListener func(res et.Json)

type Index

type Index struct {
	Column *Column
	Sorted bool
}

func NewIndex added in v1.0.3

func NewIndex(col *Column, sorted bool) *Index

* * NewIndex * @param col *Column * @param sorted bool * @return *Index *

func (*Index) Describe added in v1.0.6

func (i *Index) Describe() et.Json

* * Describe * @return et.Json *

type JDB

type JDB struct {
	Drivers map[string]func() Driver
	DBs     map[string]*DB
	Schemas map[string]*Schema
	Models  map[string]*Model
	Flows   map[string]*Flow
	Version string
}
var Jdb *JDB

func (*JDB) Describe

func (s *JDB) Describe() et.Json

* * Describe * @return et.Json *

type Message added in v1.0.5

type Message struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

type Mode added in v1.0.6

type Mode int
const (
	Origin Mode = iota
	Local
)

type Model

type Model struct {
	Db              *DB                  `json:"-"`
	Schema          *Schema              `json:"-"`
	CreatedAt       time.Time            `json:"created_date"`
	UpdateAt        time.Time            `json:"update_date"`
	Id              string               `json:"id"`
	Name            string               `json:"name"`
	Table           string               `json:"table"`
	Description     string               `json:"description"`
	Columns         []*Column            `json:"columns"`
	GeneratedFields []*Column            `json:"generated_fields"`
	PrimaryKeys     map[string]*Column   `json:"primary_keys"`
	ForeignKeys     map[string]*Column   `json:"foreign_keys"`
	Indices         map[string]*Index    `json:"indices"`
	Uniques         map[string]*Index    `json:"uniques"`
	RelationsTo     map[string]*Relation `json:"relations_to"`
	Details         map[string]*Relation `json:"details"`
	Rollups         map[string]*Rollup   `json:"rollups"`
	History         *Relation            `json:"history"`
	Required        map[string]bool      `json:"col_required"`
	SystemKeyField  *Column              `json:"system_key_field"`
	StateField      *Column              `json:"state_field"`
	IndexField      *Column              `json:"index_field"`
	SourceField     *Column              `json:"source_field"`
	FullTextField   *Column              `json:"full_text_field"`
	EventError      []EventError         `json:"-"`
	EventsInsert    []Event              `json:"-"`
	EventsUpdate    []Event              `json:"-"`
	EventsDelete    []Event              `json:"-"`
	Integrity       bool                 `json:"integrity"`
	IsCreated       bool                 `json:"is_created"`
	Version         int                  `json:"version"`
	IsDebug         bool                 `json:"-"`
}

func GetModel

func GetModel(name string) *Model

* * GetModel * @param name string * @param isCreated bool * @return *Model *

func NewModel

func NewModel(schema *Schema, name string, version int) *Model

* * NewModel * @param schema *Schema, name string, tp TypeModel, version int * @return *Model *

func (*Model) Bulk

func (s *Model) Bulk(data []et.Json) *Command

* * Bulk * @param data []et.Json * @return *Command *

func (*Model) Debug

func (s *Model) Debug() *Model

* * Debug * @return *Model *

func (*Model) DefineAtribute

func (s *Model) DefineAtribute(name string, typeData TypeData) *Column

* * DefineAtribute * @param name string * @param typeData TypeData * @param def interface{} * @return *Model *

func (*Model) DefineColumn

func (s *Model) DefineColumn(name string, typeData TypeData) *Column

* * DefineColumnIdx * @param name string, typeData TypeData * @return *Column *

func (*Model) DefineColumnIdx added in v1.0.6

func (s *Model) DefineColumnIdx(name string, typeData TypeData, idx int) *Column

* * DefineColumnIdx * @param name string, typeData TypeData * @return *Column *

func (*Model) DefineCreatedAtField

func (s *Model) DefineCreatedAtField() *Column

* * DefineCreatedAtField * @return *Column *

func (*Model) DefineDetail

func (s *Model) DefineDetail(name, fkn string, limit int) *Model

* * DefineDetail * @param name, fkn string, limit int * @return *Relation *

func (*Model) DefineEvent

func (s *Model) DefineEvent(tp TypeEvent, event Event)

* * DefineEvent * @param tp TypeEvent * @param event Event * @return *Model *

func (*Model) DefineEventError

func (s *Model) DefineEventError(event EventError)

* * DefineEventError * @param event Resilience *

func (*Model) DefineForeignKey

func (s *Model) DefineForeignKey(name string, with *Model) *Column

* * DefineForeignKey * @param name string, with *Model, pkn string * @return *Column *

func (*Model) DefineFullText

func (s *Model) DefineFullText(language string, fields []string) *Column

* * DefineFullText * @param fields []string * @return language string * @return *Column *

func (*Model) DefineGenerated

func (s *Model) DefineGenerated(name string, fn GeneratedFunction) *Column

* * DefineGenerate * @param name string, fn GeneratedFunction * @return *Column *

func (*Model) DefineHidden

func (s *Model) DefineHidden(colums ...string) *Model

* * DefineHidden * @param colums ...string * @return *Model *

func (*Model) DefineHistory

func (s *Model) DefineHistory(limit int) *Model

* * DefineHistory * @param limit int * @return *Relation *

func (*Model) DefineIndex

func (s *Model) DefineIndex(sort bool, colums ...string) *Model

* * DefineIndex * @param colums ...*Column * @return *Model *

func (*Model) DefineIndexField

func (s *Model) DefineIndexField() *Column

* * DefineIndexField * @return *Column *

func (*Model) DefineModel

func (s *Model) DefineModel() *Model

* * DefineModel * @return *Model *

func (*Model) DefinePrimaryKey

func (s *Model) DefinePrimaryKey(name string) *Column

* * DefinePrimaryKey * @param name string * @return *Column *

func (*Model) DefinePrimaryKeyField

func (s *Model) DefinePrimaryKeyField() *Column

* * DefineKeyField * @return *Column *

func (*Model) DefineProjectField

func (s *Model) DefineProjectField() *Column

* * DefineProjectField * @return *Column *

func (*Model) DefineProjectModel

func (s *Model) DefineProjectModel() *Model

* * DefineProjectModel * @return *Model *

func (*Model) DefineRelation

func (s *Model) DefineRelation(name, relatedTo, fkn string, limit int) *Relation

* * DefineRelation * @param name, relatedTo, fkn string, limit int * @return *Relation *

func (*Model) DefineRequired

func (s *Model) DefineRequired(requireds ...string) *Model

* * DefineRequired * @param requireds ...string * @return *Model *

func (*Model) DefineRollup

func (s *Model) DefineRollup(name, rollupFrom, fkn string, properties []string) *Model

* * DefineRollup * @param name, rollupFrom, property string * @return *Model *

func (*Model) DefineSource

func (s *Model) DefineSource(name string) *Column

* * DefineSourceField * @return *Column *

func (*Model) DefineSourceField

func (s *Model) DefineSourceField() *Column

* * DefineSourceField * @return *Column *

func (*Model) DefineStateField added in v1.0.5

func (s *Model) DefineStateField() *Column

* * DefineStateField * @return *Column *

func (*Model) DefineSystemKeyField

func (s *Model) DefineSystemKeyField() *Column

* * DefineSystemKeyField * @return *Column *

func (*Model) DefineUnique

func (s *Model) DefineUnique(colums ...string) *Model

* * DefineUnique * @param colums ...*Column * @return *Model *

func (*Model) DefineUpdatedAtField

func (s *Model) DefineUpdatedAtField() *Column

* * DefineUpdatedAtField * @return *Column *

func (*Model) Delete

func (s *Model) Delete() *Command

* * Delete * @return *Command *

func (*Model) Describe

func (s *Model) Describe() et.Json

* * Describe * @return et.Json *

func (*Model) Drop

func (s *Model) Drop()

* * Drop *

func (*Model) GenId

func (s *Model) GenId(id string) string

* * GenId * @param id string * @return string *

func (*Model) GenKey added in v1.0.5

func (s *Model) GenKey(id string) string

* * GenKey * @param id string * @return string *

func (*Model) GetColumn added in v1.0.3

func (s *Model) GetColumn(name string) *Column

* * GetColumn * @param name string * @return *Column *

func (*Model) GetColumns added in v1.0.3

func (s *Model) GetColumns(names ...string) []*Column

* * GetColumns * @param name string * @return *Column *

func (*Model) GetField added in v1.0.5

func (s *Model) GetField(name string) *Field

* * GetField * @param name string * @return *Field *

func (*Model) GetFrom

func (s *Model) GetFrom() *QlFrom

* * GetFrom * @return *QlFrom *

func (*Model) GetKeys added in v1.0.5

func (s *Model) GetKeys() []*Column

* * GetKeys * @return []*Column *

func (*Model) GetSerie

func (s *Model) GetSerie() int64

* * GetSerie * @return int *

func (*Model) Init

func (s *Model) Init() error

* * Init * @return error *

func (*Model) Insert

func (s *Model) Insert(data et.Json) *Command

* * Insert * @param data []et.Json * @return *Command *

func (*Model) Load added in v1.0.5

func (s *Model) Load(data []byte) error

* * Load * @param data []byte * @return error *

func (*Model) Low added in v1.0.5

func (s *Model) Low() string

* * Low * @return string *

func (*Model) New

func (s *Model) New() et.Json

* * New * @return et.Json *

func (*Model) OnListener added in v1.0.4

func (s *Model) OnListener(channels []string, listener HandlerListener)

func (*Model) Pk added in v1.0.6

func (s *Model) Pk() *Column

* * Pk * @return *Column *

func (*Model) Query

func (s *Model) Query(params et.Json) (interface{}, error)

* * Query * @param params et.Json * @return interface{}, error *

func (*Model) Serialized added in v1.0.5

func (s *Model) Serialized() ([]byte, error)

* * Serialized * @return []byte, error *

func (*Model) SourceIdx added in v1.0.6

func (s *Model) SourceIdx() int

* * SourceIdx * @return int *

func (*Model) Undo

func (s *Model) Undo(key string, index int64) *Command

* * Undo * @param index int64 * @return *Command *

func (*Model) Up added in v1.0.5

func (s *Model) Up() string

* * Up * @return string *

func (*Model) Update

func (s *Model) Update(data et.Json) *Command

* * Update * @param data []et.Json * @return *Command *

func (*Model) Where

func (s *Model) Where(val string) *Ql

* * Where * @param val string * @return *Ql *

type Operator

type Operator int
const (
	NoP Operator = iota
	Equal
	Neg
	In
	Like
	More
	Less
	MoreEq
	LessEq
	Between
	IsNull
	NotNull
	Search
)

func (Operator) Str

func (s Operator) Str() string

type Ql

type Ql struct {
	*QlWhere
	Db         *DB        `json:"-"`
	TypeSelect TypeSelect `json:"type_select"`
	Froms      *QlFroms   `json:"froms"`
	Joins      []*QlJoin  `json:"joins"`
	Selects    []*Field   `json:"selects"`
	Details    []*Field   `json:"details"`
	Rollups    []*Field   `json:"rollups"`
	Groups     []*Field   `json:"group_bys"`
	Havings    *QlHaving  `json:"havings"`
	Orders     *QlOrder   `json:"orders"`
	Sheet      int        `json:"sheet"`
	Offset     int        `json:"offset"`
	Limit      int        `json:"limit"`
	Sql        string     `json:"sql"`
	Result     et.Items   `json:"result"`
}

func From

func From(m *Model) *Ql

func (*Ql) All

func (s *Ql) All() (et.Items, error)

* * All * @return et.Items, error *

func (*Ql) And

func (s *Ql) And(val string) *Ql

* * And * @param val interface{} * @return *Ql *

func (*Ql) Avg

func (s *Ql) Avg(field string) *Ql

* * Avg * @param field string * @return *Ql *

func (*Ql) Between

func (s *Ql) Between(vals interface{}) *Ql

* * Between * @param vals interface{} * @return *Ql *

func (*Ql) Count

func (s *Ql) Count(field string) *Ql

* * Count * @param field string * @return *Ql *

func (*Ql) Counted

func (s *Ql) Counted() (int, error)

* * Counted * @return int, error *

func (*Ql) Data

func (s *Ql) Data(fields ...string) *Ql

* * Data * @param fields ...string * @return *Ql *

func (*Ql) Debug

func (s *Ql) Debug() *Ql

* * Debug * @param v bool * @return *Ql *

func (*Ql) Describe

func (s *Ql) Describe() et.Json

* * Describe * @return et.Json *

func (*Ql) Detail

func (s *Ql) Detail(name string, page, rows int, tp TypeResult) *Ql

* * Detail * @param name string, page, rows int * @return *Ql *

func (*Ql) Eq

func (s *Ql) Eq(val interface{}) *Ql

* * Eq * @param val interface{} * @return *Ql *

func (*Ql) Exec added in v1.0.5

func (s *Ql) Exec() (et.Items, error)

* * Exec * @return et.Items, error *

func (*Ql) Exist

func (s *Ql) Exist() (bool, error)

* * Exist * @return bool, error *

func (*Ql) First

func (s *Ql) First(n int) (et.Items, error)

* * First * @param n int * @return et.Items, error *

func (*Ql) FullJoin

func (s *Ql) FullJoin(m *Model) *QlJoin

* * FullJoin * @param m *Model * @return *Ql *

func (*Ql) GetDetails added in v1.0.5

func (s *Ql) GetDetails(data *et.Json) *et.Json

* * GetDetails * @return et.Json *

func (*Ql) GroupBy

func (s *Ql) GroupBy(fields ...string) *Ql

* * GroupBy * @param fields ...string * @return *Ql *

func (*Ql) Having

func (s *Ql) Having(val string) *QlHaving

* * Having * @param field string * @return *QlWhere *

func (*Ql) History

func (s *Ql) History(v bool) *Ql

* * History * @param v bool * @return *Ql *

func (*Ql) In

func (s *Ql) In(val ...any) *Ql

* * In * @param val ...any * @return *Ql *

func (*Ql) IsNull

func (s *Ql) IsNull() *Ql

* * IsNull * @return *Ql *

func (*Ql) Join

func (s *Ql) Join(m *Model) *QlJoin

* * QlJoin * @param m *Model * @return *Ql *

func (*Ql) Last

func (s *Ql) Last(n int) (et.Items, error)

* * Last * @param n int * @return et.Items, error *

func (*Ql) LeftJoin

func (s *Ql) LeftJoin(m *Model) *QlJoin

* * LeftJoin * @param m *Model * @return *Ql *

func (*Ql) Less

func (s *Ql) Less(val interface{}) *Ql

* * Less * @param val interface{} * @return *Ql *

func (*Ql) LessEq

func (s *Ql) LessEq(val interface{}) *Ql

* * LessEq * @param val interface{} * @return *Ql *

func (*Ql) Like

func (s *Ql) Like(val interface{}) *Ql

* * Like * @param val interface{} * @return *Ql *

func (*Ql) List

func (s *Ql) List(page, rows int) (et.List, error)

* * List * @param page int * @param rows int * @return et.List, error *

func (*Ql) Max

func (s *Ql) Max(field string) *Ql

* * Max * @param field string * @return *Ql *

func (*Ql) Min

func (s *Ql) Min(field string) *Ql

* * Min * @param field string * @return *Ql *

func (*Ql) More

func (s *Ql) More(val interface{}) *Ql

* * More * @param val interface{} * @return *Ql *

func (*Ql) MoreEq

func (s *Ql) MoreEq(val interface{}) *Ql

* * MoreEq * @param val interface{} * @return *Ql *

func (*Ql) Neg

func (s *Ql) Neg(val interface{}) *Ql

* * Neg * @param val interface{} * @return *Ql *

func (*Ql) NotNull

func (s *Ql) NotNull() *Ql

* * NotNull * @return *Ql *

func (*Ql) One

func (s *Ql) One() (et.Item, error)

* * One * @return et.Item, error *

func (*Ql) Or

func (s *Ql) Or(val string) *Ql

* * Or * @param val interface{} * @return *Ql *

func (*Ql) OrderBy

func (s *Ql) OrderBy(sorted bool, columns ...string) *Ql

* * OrderBy * @param sorted bool * @param columns ...string * @return *Ql *

func (*Ql) OrderByAsc

func (s *Ql) OrderByAsc(columns ...string) *Ql

* * OrderByAsc * @param columns ...any * @return *Ql *

func (*Ql) OrderByDesc

func (s *Ql) OrderByDesc(columns ...string) *Ql

* * OrderByDesc * @param columns ...any * @return *Ql *

func (*Ql) Page

func (s *Ql) Page(val int) *Ql

* * Offset * @param offset int * @return *Ql *

func (*Ql) Query

func (s *Ql) Query(params et.Json) (interface{}, error)

* * Query * @param params et.Json * @return Ql *

func (*Ql) RightJoin

func (s *Ql) RightJoin(m *Model) *QlJoin

* * RightJoin * @param m *Model * @return *Ql *

func (*Ql) Rows

func (s *Ql) Rows(val int) (et.Items, error)

* * Limit * @param limit int * @return *Ql *

func (*Ql) Search

func (s *Ql) Search(language string, val interface{}) *Ql

* * Search * @param language string, val interface{} * @return *Ql *

func (*Ql) Select

func (s *Ql) Select(fields ...string) *Ql

* * Select * @param fields ...string * @return *Ql *

func (*Ql) Sum

func (s *Ql) Sum(field string) *Ql

* * Sum * @param field string * @return *Ql *

func (*Ql) Where

func (s *Ql) Where(val string) *Ql

* * Where * @param val interface{} * @return *Ql *

type QlCondition

type QlCondition struct {
	Connector Connector
	Field     *Field
	Operator  Operator
	Value     interface{}
	Language  string
}

func NewQlCondition

func NewQlCondition(field *Field) *QlCondition

* * NewQlCondition * @params key interface{} * @return QlWhere *

func (*QlCondition) GetValue added in v1.0.6

func (s *QlCondition) GetValue() interface{}

* * GetValue * @param val interface{} * @return string *

func (*QlCondition) String added in v1.0.6

func (s *QlCondition) String() string

* * String * @return string *

func (*QlCondition) ValStr added in v1.0.6

func (s *QlCondition) ValStr() string

* * ValStr * @return *string *

type QlFrom

type QlFrom struct {
	*Model
	As string
}

type QlFroms

type QlFroms struct {
	Froms []*QlFrom
	// contains filtered or unexported fields
}

type QlHaving

type QlHaving struct {
	*QlWhere
	Ql *Ql
}

func (*QlHaving) And

func (s *QlHaving) And(val interface{}) *QlHaving

* * Having * @param val interface{} * @return *QlHaving *

func (*QlHaving) Data

func (s *QlHaving) Data(fields ...string) *Ql

* * Data * @param fields ...string * @return *Ql *

func (*QlHaving) Or

func (s *QlHaving) Or(val interface{}) *QlHaving

* * Or * @param val interface{} * @return *QlHaving *

func (*QlHaving) Select

func (s *QlHaving) Select(fields ...string) *Ql

* * Select * @param fields ...string * @return *Ql *

type QlJoin

type QlJoin struct {
	*QlWhere
	Ql       *Ql
	TypeJoin TypeJoin
	With     *QlFrom
}

func (*QlJoin) And

func (s *QlJoin) And(val interface{}) *QlJoin

* * And * @param field string * @return *QlFilter *

func (*QlJoin) Data

func (s *QlJoin) Data(fields ...string) *Ql

* * Data * @param fields ...string * @return *Ql *

func (*QlJoin) On

func (s *QlJoin) On(val interface{}) *QlJoin

* * On * @param name string * @return *Ql *

func (*QlJoin) Or

func (s *QlJoin) Or(val interface{}) *QlJoin

* * Or * @param field string * @return *QlFilter *

func (*QlJoin) Select

func (s *QlJoin) Select(fields ...string) *Ql

* * Select * @param fields ...string * @return *Ql *

type QlJoins

type QlJoins []*QlJoin

type QlOrder

type QlOrder struct {
	Asc  []*Field
	Desc []*Field
}

type QlWhere

type QlWhere struct {
	Wheres []*QlCondition

	IsDebug bool
	// contains filtered or unexported fields
}

func NewQlWhere

func NewQlWhere() *QlWhere

* * NewQlWhere * @return *QlWhere *

func (*QlWhere) Between

func (s *QlWhere) Between(vals interface{}) *QlWhere

* * Between * @param val1, val2 interface{} * @return QlWhere *

func (*QlWhere) Debug

func (s *QlWhere) Debug() *QlWhere

* * Debug * @param v bool * @return *Command *

func (*QlWhere) Eq

func (s *QlWhere) Eq(val interface{}) *QlWhere

* * Eq * @param val interface{} * @return QlWhere *

func (*QlWhere) History

func (s *QlWhere) History(v bool) *QlWhere

* * History * @param v bool * @return *Command *

func (*QlWhere) In

func (s *QlWhere) In(val ...any) *QlWhere

* * In * @param val ...any * @return QlWhere *

func (*QlWhere) IsNull

func (s *QlWhere) IsNull() *QlWhere

* * IsNull * @return *QlWhere *

func (*QlWhere) Less

func (s *QlWhere) Less(val interface{}) *QlWhere

* * Less * @param val interface{} * @return QlWhere *

func (*QlWhere) LessEq

func (s *QlWhere) LessEq(val interface{}) *QlWhere

* * LessEq * @param val interface{} * @return QlWhere *

func (*QlWhere) Like

func (s *QlWhere) Like(val interface{}) *QlWhere

* * Like * @param val interface{} * @return QlWhere *

func (*QlWhere) More

func (s *QlWhere) More(val interface{}) *QlWhere

* * More * @param val interface{} * @return QlWhere *

func (*QlWhere) MoreEq

func (s *QlWhere) MoreEq(val interface{}) *QlWhere

* * MoreEq * @param val interface{} * @return QlWhere *

func (*QlWhere) Neg

func (s *QlWhere) Neg(val interface{}) *QlWhere

* * Neg * @param val interface{} * @return QlWhere *

func (*QlWhere) NotNull

func (s *QlWhere) NotNull() *QlWhere

* * NotNull * @return *QlWhere *

func (*QlWhere) Search

func (s *QlWhere) Search(language string, val interface{}) *QlWhere

* * Search * @param val interface{} * @return QlWhere *

func (*QlWhere) String added in v1.0.5

func (s *QlWhere) String() string

* * String * @return string *

type RID added in v1.0.5

type RID struct {
	Id     string `json:"id"`
	Schema string `json:"schema"`
	Table  string `json:"table"`
	Model  string `json:"model"`
}

func GetRID added in v1.0.5

func GetRID(id string) *RID

type Relation

type Relation struct {
	Key             string  `json:"key"`
	With            *Model  `json:"with"`
	Fk              *Column `json:"fk"`
	Limit           int     `json:"rows"`
	OnDeleteCascade bool    `json:"on_delete_cascade"`
	OnUpdateCascade bool    `json:"on_update_cascade"`
}

func (*Relation) Describe added in v1.0.6

func (s *Relation) Describe() et.Json

type Rollup

type Rollup struct {
	Key    string  `json:"key"`
	Source *Model  `json:"source"`
	Fk     *Column `json:"fk"`
	Props  []*Column
}

func (*Rollup) Describe added in v1.0.6

func (s *Rollup) Describe() et.Json

type Schema

type Schema struct {
	Db          *DB               `json:"-"`
	CreatedAt   time.Time         `json:"created_date"`
	UpdateAt    time.Time         `json:"update_date"`
	Id          string            `json:"id"`
	Name        string            `json:"name"`
	Description string            `json:"description"`
	Models      map[string]*Model `json:"models"`
}

func GetShema

func GetShema(name string, isCreate bool) *Schema

* * GetShema * @param name string * @param isCreate bool * @return *Schema *

func NewSchema

func NewSchema(db *DB, name string) (*Schema, error)

func (*Schema) Describe

func (s *Schema) Describe() et.Json

* * Describe * @return et.Json *

func (*Schema) Init added in v1.0.3

func (s *Schema) Init() error

* * Init * @return error *

func (*Schema) Low added in v1.0.5

func (s *Schema) Low() string

* * Low * @return string *

func (*Schema) Up added in v1.0.5

func (s *Schema) Up() string

* * Up * @return string *

type TypeAgregation

type TypeAgregation int
const (
	Nag TypeAgregation = iota
	AgregationSum
	AgregationCount
	AgregationAvg
	AgregationMin
	AgregationMax
)

func (TypeAgregation) Str

func (s TypeAgregation) Str() string

type TypeColumn

type TypeColumn int
const (
	TpColumn TypeColumn = iota
	TpAtribute
	TpGenerated
	TpRelatedTo
	TpRollup
)

func (TypeColumn) Str

func (s TypeColumn) Str() string

type TypeCommand

type TypeCommand int
const (
	Insert TypeCommand = iota
	Update
	Delete
	Bulk
	Undo
)

type TypeData

type TypeData int
const (
	TypeDataText TypeData = iota
	TypeDataMemo
	TypeDataShortText
	TypeDataKey
	TypeDataState
	TypeDataInt
	TypeDataNumber
	TypeDataPrecision
	TypeDataSerie
	TypeDataBool
	TypeDataTime
	TypeDataBytes
	// Special
	TypeDataObject
	TypeDataArray
	TypeDataGeometry
	TypeDataFullText
	TypeDataSelect
	TypeDataNone
)

func (TypeData) DefaultValue

func (s TypeData) DefaultValue() interface{}

func (TypeData) Str

func (s TypeData) Str() string

type TypeEvent

type TypeEvent int
const (
	EventInsert TypeEvent = iota
	EventUpdate
	EventDelete
)

func (TypeEvent) Name

func (s TypeEvent) Name() string

type TypeJoin

type TypeJoin int
const (
	InnerJoin TypeJoin = iota
	LeftJoin
	RightJoin
	FullJoin
)

func (TypeJoin) Str

func (s TypeJoin) Str() string

type TypeResult

type TypeResult int
const (
	TpResult TypeResult = iota
	TpList
)

func StrToTypeResult

func StrToTypeResult(str string) TypeResult

* * StrToTypeResult * @param str string * @return TypeResult *

type TypeSelect

type TypeSelect int
const (
	Select TypeSelect = iota
	Data
)

Jump to

Keyboard shortcuts

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