Documentation

TSLAppBasicRecordDAO_postgre extends TSLBasicRecordDAO
in

Este DAO es especifico para el postgresql e implementa solo la parte comun y especifica de la base de datos POSTGRES SQL, como en este caso son la determinacion de algunos errores comunes a la bases de datos de diferente marca , pero que en el caso del POSTGRESQL no usa los estandares ansi. Todas los DAO para postgres deben implementar esta clase , la misma que es abstracta

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
__construct() Constructor se puede indicar si las busquedas solo seran en registros activos. mixed
isDuplicateKeyError() IMPORTANTE: Este metodo usado aqui es solo para postgreSQL ya que no envian codigo de error solo mensaje. bool
isForeignKeyError() IMPORTANTE: Este metodo usado aqui es solo para postgreSQL ya que no envian codigo de error solo mensaje. bool
isRecordModifiedError() IMPORTANTE: Este metodo usado aqui es solo para postgreSQL ya que no envian codigo de error solo mensaje, ademas este error formalmente no existe y sera usado cuando el error de registro modificado sea detectado dentro de un Stored Procedure , queda al implementador realizarlo y enviar el error en caso suceda. 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

__construct()

Constructor se puede indicar si las busquedas solo seran en registros activos.

public __construct( [ $activeSearchOnly : bool = TRUE ] ) : mixed
Parameters
$activeSearchOnly : bool = TRUE
Return values
mixed

isDuplicateKeyError()

IMPORTANTE: Este metodo usado aqui es solo para postgreSQL ya que no envian codigo de error solo mensaje.

public isDuplicateKeyError( $errorCode : int , $errorMsg : string ) : bool
Parameters
$errorCode : int
$errorMsg : string
Tags
inheritdoc
Return values
bool

isForeignKeyError()

IMPORTANTE: Este metodo usado aqui es solo para postgreSQL ya que no envian codigo de error solo mensaje.

public isForeignKeyError( $errorCode : int , $errorMsg : string ) : bool
Parameters
$errorCode : int
$errorMsg : string
Tags
inheritdoc
Return values
bool

isRecordModifiedError()

IMPORTANTE: Este metodo usado aqui es solo para postgreSQL ya que no envian codigo de error solo mensaje, ademas este error formalmente no existe y sera usado cuando el error de registro modificado sea detectado dentro de un Stored Procedure , queda al implementador realizarlo y enviar el error en caso suceda.

public isRecordModifiedError( $errorCode : int , $errorMsg : string ) : bool

Actualmente se espera que el mensaje contenga el texto 'record modified'

Parameters
$errorCode : int
$errorMsg : string
Tags
inheritdoc
Return values
bool

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