advpl-orm

Biblioteca ORM desenvolvida inteiramente em ADVPL para o ERP Protheus

GPL-3.0 License

Stars
6

ADVPL ORM

Biblioteca ORM (Object Relational Mapping) desenvolvida inteiramente em ADVPL!

Instalao

Para utilizao da biblioteca, basta copiar os arquivos de src/ e include/ para pasta do seu projeto. Note que esta biblioteca foi testada apenas com o banco de dados Microsoft SQL Server.

Utilizao

Para cada tabela existente no banco, basta criar as classes DAO e Model extendendo as classes base e sobrescrever o mtodo getAlias() para retornar corretamente o alias da tabela. Ex:

//SA2.prw
#include 'totvs.ch'

CLASS SA2 FROM BaseModel
	METHOD New() CONSTRUCTOR
	METHOD getAlias()
ENDCLASS

METHOD New() CLASS SA2
Return

METHOD getAlias() CLASS SA2
Return("SA2")
//SA2_DAO.prw
#include 'totvs.ch'

CLASS SA2_DAO FROM BaseDao
	METHOD New() CONSTRUCTOR
	METHOD getAlias()
ENDCLASS

METHOD New() CLASS SA2_DAO
Return

METHOD getAlias() CLASS SA2_DAO
Return("SA2")

Exemplos de uso

Alm de serem totalmente dinmicas por se basearem no SX3, as classes so extremamente fceis e intuitivas.

Instanciando um novo objeto

// Instancia um novo model
oModel := SA2():new()
oModel:set("A2_LOJA", "1")
oModel:get("A2_LOJA") // 1

Trabalhando com o banco de dados

oModel  := SA2():new()
oSA2    := oModel:findOne(10) // Busca o registro com o RECNO 10

// Manipulando o model
oSA2:set("A2_LOJA", "1")
oSA2:get("A2_LOJA") // 1
oSA2:save() // Atualiza os valores no banco de dados
oSA2:delete() // Marca o campo D_E_L_E_T_ com *

Trabalhando com queries mais complexas

oModel  := SA2():new()
// Busca o primeiro registro com A2_FILIAL = 01 e A2_LOJA = 02
oModel:query({{"A2_FILIAL", "01"}, {"A2_LOJA", "02"}, "ONE") 
// Retorna uma array com todos os registros que possuem A2_FILIAL = 01 e A2_LOJA = 02
oModel:query({{"A2_FILIAL", "01"}, {"A2_LOJA", "02"}, "MANY") 
// Resultar na query SELECT * FROM SA2010 WHERE A2_FILIAL IN ('01', '02') WHERE D_E_L_E_T_ = ''
oModel:query({{"A2_FILIAL", {"01", "02"}}}, "MANY")
Related Projects