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
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
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
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
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
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
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
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
Return values
string —Un string con el query requerido.
getAddRecordQuery()
Retorna el query para agregar un registro.
protected
abstract getAddRecordQuery(
&$record :
TSLDataModel
[, &$constraints :
TSLRequestConstraints
= NULL ]
)
: string
Parameters
- $record : TSLDataModel
El modelo de datos que representa al registro a agregar
- $constraints : TSLRequestConstraints = NULL
Tags
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