Documentation

TSLBasicRecordDAO
in
implements TSLIBasicRecordDAO

Este DAO basico sirve para los casos simples de hacer operaciones CRUD a modelos del sistema, basicamente es usable cuando la entidad = modelo.

Recordar que es abstracta y que deben implementarse las clases que retornan los querys para las distintas operaciones.

IMPORTANTE : La aplicacion debera haber cargado previamente las siguientes definiciones

  define('DB_OP_OK',0);
  define('DB_ERR_ALLOK',-100000);
  define('DB_ERR_SERVERNOTFOUND',-100001);
  define('DB_ERR_RECORDNOTFOUND',-100002);
  define('DB_ERR_RECORDNOTDELETED',-100003);
  define('DB_ERR_RECORDEXIST',-100004);
  define('DB_ERR_FOREIGNKEY',-100005);
  define('DB_ERR_CANTEXECUTE',-100006);
  define('DB_ERR_RECORD_MODIFIED',-100007);
  define('DB_ERR_RECORDINACTIVE',-100008);
  define('DB_ERR_DUPLICATEKEY',-100009);

Table of Contents

$activeSearchOnly Si la busqueda permite solo activos o no, bool
get() Busca un record basado en su id. int
getByCode() Busca un record basado en su codigo unico. int
fetch() Funcion que lee la lista de todos los modelos que implemente la clase final. array
remove() Elimina un modelo de la persistencia. int
update() Ipdate un registro a la persistencia. int
add() Agrega un registro a la persistencia. int
getRecordQuery() Debe retornar el string con el query para leer el registro identificado por su id unico. string
getRecordQueryByCode() Debe retornar el string con el query para leer el registro identificado por su codigo unico , esto es para el caso que el id no sea la llave de busqueda. string
getFetchQuery() Debe retornar el query para recibir todos los registros, si el miembor activeSearchOnly es TRUE solo buscara los activos string
getDeleteRecordQuery() Debe retornar el query para eliminar un registro. string
getUpdateRecordQuery() Debe retornar el query requerido para actualizar un registro. string
getAddRecordQuery() Retorna el query para agregar un registro. string
getLastSequenceOrIdentityQuery() Si el modelo usara una pk o id que es secuencia o identidad esta funcion debera estar implementada y debera retornar el query que la base de datos requiere para obtener el ultimo valor de una secuencia o campo identidad , esto varia mucho entre bases de datos por lo tanto si se requiere debe hacerse override a este metodo Por default retorna null. string

Properties

$activeSearchOnly

Si la busqueda permite solo activos o no,

protected bool $activeSearchOnly = \TRUE

Methods

get()

Busca un record basado en su id.

public get( $id : mixed , &$model : TSLDataModel [, &$constraints : TSLRequestConstraints = NULL ] [, $subOperation : string = NULL ] ) : int
Parameters
$id : mixed

con el unique id del registro

$model : TSLDataModel

repositorio de la respuesta.

$constraints : TSLRequestConstraints = NULL

conteniendo el numero de registros elementos para el order by , filtro etc de la lista, puede ser null

$subOperation : string = NULL

opcional e indica que sub operacion de lectura deberemos hacer , por ejemplo leer haciendo un join para normalizar datos al cliente.

Return values
int


DB_ERR_ALL_OK no hay errores
DB_ERR_SERVERNOTFOUND el servidor de base de datos no se ha encontrado.
DB_ERR_CANTEXECUTE Error ejecutando el query.
DB_ERR_RECORDNOTFOUND - No se encontro el registro

getByCode()

Busca un record basado en su codigo unico.

public getByCode( $code : mixed , &$model : TSLDataModel [, &$constraints : TSLRequestConstraints = NULL ] [, $subOperation : string = NULL ] ) : int
Parameters
$code : mixed

con el unique id del registro

$model : TSLDataModel

repositorio de la respuesta.

$constraints : TSLRequestConstraints = NULL

conteniendo el numero de registros elementos para el order by , filtro etc de la lista.

$subOperation : string = NULL

opcional e indica que sub operacion de lectura deberemos hacer , por ejemplo leer haciendo un join para normalizar datos al cliente.

Return values
int


DB_ERR_ALL_OK no hay errores
DB_ERR_SERVERNOTFOUND el servidor de base de datos no se ha encontrado.
DB_ERR_CANTEXECUTE Error ejecutando el query.
DB_ERR_RECORDNOTFOUND - No se encontro el registro

fetch()

Funcion que lee la lista de todos los modelos que implemente la clase final.

public fetch( [ &$record : TSLDataModel = NULL ] [, &$constraints : TSLRequestConstraints = NULL ] [, $subOperation : string = NULL ] ) : array
Parameters
$record : TSLDataModel = NULL

con los datos base para generar la condicion de busqueda.

$constraints : TSLRequestConstraints = NULL

conteniendo el numero de registros elementos para el order by , filtro etc de la lista.

$subOperation : string = NULL

si el caso de fetch de datos tiene sub operaciones que realizar, es comun en el fetch que existan variantes para una misma entidad

Return values
array

con los registros de salida.

remove()

Elimina un modelo de la persistencia.

public remove( $id : mixed , $versionId : int , $verifiedDeletedCheck : bool ) : int
Parameters
$id : mixed

, representa el valor unico del registro dentro de la base de datos.

$versionId : int

el cual representa la version del registro en la persistencia, debemos recordar que toda base de datos al menos es capaz de mantener un codigo de version de un registro el cual cambia en cada update.

$verifiedDeletedCheck : bool

, si es true verficara si no pudo eliminar por ya estar eliminado el registro. Es usualmente util para el caso de bases de datos que no soporten versionamiento.

Tags
inheritdoc
Return values
int


DB_ERR_ALL_OK no hay errores
DB_ERR_SERVERNOTFOUND el servidor de base de datos no se ha encontrado.
DB_ERR_CANTEXECUTE Error ejecutando el query.
DB_ERR_RECORDNOTFOUND - No se encontro el registro

update()

Ipdate un registro a la persistencia.

public update( &$record : TSLDataModel [, $subOperation : string = NULL ] ) : int

Debe verificar si el registro ha sido modificado o ya no existe, si estuviera modificado el parametro model debe retornar el registro modificado.

Parameters
$record : TSLDataModel
$subOperation : string = NULL

esto puede usarse para indicar que clase de relectura de registro luego del update debe hacerse (llamada a get()). *

Tags
inheritdoc
Return values
int


DB_ERR_ALL_OK no hay errores
DB_ERR_SERVERNOTFOUND el servidor de base de datos no se ha encontrado.
DB_ERR_CANTEXECUTE Error ejecutando el query.
DB_ERR_RECORDNOTFOUND - No se encontro el registro
DB_ERR_RECORD_MODIFIED - El registro esta modificado.

add()

Agrega un registro a la persistencia.

public add( &$record : TSLDataModel [, &$constraints : TSLRequestConstraints = NULL ] [, $subOperation : string = NULL ] ) : int

Debe verificar que el registro no haya sido modificado externamente. De estar modificado , el parametro model debera contener el registro encontrado.

Parameters
$record : TSLDataModel
$constraints : TSLRequestConstraints = NULL

que para este caso podria ser por ejemplo un valor que puedamodificar la forma de agregar o cualquier otro uso.

$subOperation : string = NULL

esto puede usarse para indicar que clase de relectura de registro luego del add debe hacerse (llamada a get()).

Tags
inheritdoc
Return values
int


DB_ERR_ALL_OK no hay errores
DB_ERR_SERVERNOTFOUND el servidor de base de datos no se ha encontrado.
DB_ERR_CANTEXECUTE Error ejecutando el query.
DB_ERR_RECORDEXIST - El registro ya existe previamente.

getRecordQuery()

Debe retornar el string con el query para leer el registro identificado por su id unico.

protected abstract getRecordQuery( $id : mixed [, &$constraints : TSLRequestConstraints = NULL ] [, $subOperation : string = NULL ] ) : string
Parameters
$id : mixed

El identificador unico del registro.

$constraints : TSLRequestConstraints = NULL

conteniendo el numero de registros elementos para el order by , filtro etc de la lista.

$subOperation : string = NULL

para el caso que no se requiera la lectura directa del modelo fisico y se requiera por ejemplo joins para normalizar la data a retornar, por default leera el modelo fisico,

Tags
abstract
Return values
string

con el query requerido,

getRecordQueryByCode()

Debe retornar el string con el query para leer el registro identificado por su codigo unico , esto es para el caso que el id no sea la llave de busqueda.

protected abstract getRecordQueryByCode( $code : mixed [, &$constraints : TSLRequestConstraints = NULL ] [, $subOperation : string = NULL ] ) : string
Parameters
$code : mixed

El identificador unico del registro.

$constraints : TSLRequestConstraints = NULL

conteniendo el numero de registros elementos para el order by , filtro etc de la lista.

$subOperation : string = NULL

para el caso que no se requiera la lectura directa del modelo fisico y se requiera por ejemplo joins para normalizar la data a retornar, por default leera el modelo fisico,

Tags
abstract
Return values
string

con el query requerido,

getFetchQuery()

Debe retornar el query para recibir todos los registros, si el miembor activeSearchOnly es TRUE solo buscara los activos

protected abstract getFetchQuery( [ &$record : TSLDataModel = NULL ] [, &$constraints : TSLRequestConstraints = NULL ] [, $subOperation : string = NULL ] ) : string
Parameters
$record : TSLDataModel = NULL

El modelo de datos que contiene los datos a buscar.

$constraints : TSLRequestConstraints = NULL

conteniendo el numero de registros elementos para el order by , filtro etc de la lista.

$subOperation : string = NULL

si el caso de fetch de datos tiene sub operaciones que realizar, es comun en el fetch que existan variantes para una misma entidad ya que en uchos casos se reuiere joins para devolver una lista de registros de modelo no fisico.

Tags
abstract
Return values
string

String con el query requerido

getDeleteRecordQuery()

Debe retornar el query para eliminar un registro.

protected abstract getDeleteRecordQuery( $id : mixed , $versionId : int ) : string
Parameters
$id : mixed

El identificacor unico del registro a eliminar.

$versionId : int

Para las bases de datos que soporten versionamiento de registros este seria el valor de la version del registro.

Tags
abstract
Return values
string

Un string con el query requerido.

getUpdateRecordQuery()

Debe retornar el query requerido para actualizar un registro.

protected abstract getUpdateRecordQuery( &$record : TSLDataModel ) : string
Parameters
$record : TSLDataModel

El modelo de datos que representa al registro a actualizar.

Tags
abstract
Return values
string

Un string con el query requerido.

getLastSequenceOrIdentityQuery()

Si el modelo usara una pk o id que es secuencia o identidad esta funcion debera estar implementada y debera retornar el query que la base de datos requiere para obtener el ultimo valor de una secuencia o campo identidad , esto varia mucho entre bases de datos por lo tanto si se requiere debe hacerse override a este metodo Por default retorna null.

protected getLastSequenceOrIdentityQuery( [ &$record : TSLDataModel = NULL ] ) : string

Por lo general usado siempre luego de un INSERT que es el unico caso en que no se conoce su valor.

Un caso especial es cuando un stored procedure agrega varias registros a la misma tabla principal que corresponde al modelo , en ese caso no se puede jalar directamente el ultimo. En dichos caso es conveniente que el override de este metodo retorne el query necesario para obtener el id requerido basandose en el parametro record para obtener los datos.

Parameters
$record : TSLDataModel = NULL

Datos del ultimo registro grabado tal como se enviaron a grabar , usado para los casos que sea conveniente obtener un identity a partir de los datos de entrada , como se explica en la ultima parte de los comentarios.

Return values
string

por default retornamos null

Search results