Skip to content
Snippets Groups Projects
Commit 36e9160e authored by Jean-Laurent DUZANT's avatar Jean-Laurent DUZANT
Browse files

FIX #19580 TIME 1:20 create and update chrono value in parameters from increase_chrono

parent 2bd70e67
No related branches found
No related tags found
No related merge requests found
......@@ -1559,13 +1559,18 @@ CREATE TABLE address_sectors
)
WITH (OIDS=FALSE);
CREATE OR REPLACE FUNCTION public.increase_chrono(chrono_id_seq text) returns table (chrono_id bigint) as $$
CREATE OR REPLACE FUNCTION public.increase_chrono(chrono_id_seq text, chrono_id_name text) returns table (chrono_id bigint) as $$
DECLARE
retval bigint;
BEGIN
IF NOT EXISTS (SELECT 0 FROM pg_class where relname = chrono_id_seq ) THEN
EXECUTE 'CREATE SEQUENCE ' || chrono_id_seq || ' INCREMENT 1 MINVALUE 100 MAXVALUE 9223372036854775807 START 100 CACHE 1;';
END IF;
RETURN QUERY EXECUTE 'SELECT nextval($1)' USING chrono_id_seq;
IF NOT EXISTS (SELECT 0 FROM parameters where id = chrono_id_name ) THEN
EXECUTE 'INSERT INTO parameters (id, param_value_int) VALUES ( ''' || chrono_id_name || ''', 1)';
END IF;
SELECT nextval(chrono_id_seq) INTO retval;
UPDATE parameters set param_value_int = retval WHERE id = chrono_id_name;
RETURN QUERY SELECT retval;
END;
$$ LANGUAGE plpgsql;
\ No newline at end of file
......@@ -87,8 +87,9 @@ class ChronoModel
*/
public static function getChronoGlobal()
{
$chronoId = 'chrono_global_' . date('Y') . "_seq";
$chrono = DatabaseModel::createOrIncreaseChrono(['chronoId' => $chronoId]);
$chronoIdName = 'chrono_global_' . date('Y');
$chronoSeqName = $chronoIdName . "_seq";
$chrono = DatabaseModel::createOrIncreaseChrono(['chronoIdName' => $chronoIdName, 'chronoSeqName' => $chronoSeqName]);
return $chrono;
}
......@@ -97,15 +98,17 @@ class ChronoModel
*/
public static function getChronoEntity($entityId)
{
$chronoId = "chrono_{$entityId}_" . date('Y') . "_seq";
$chrono = DatabaseModel::createOrIncreaseChrono(['chronoId' => $chronoId]);
$chronoIdName = "chrono_{$entityId}_" . date('Y');
$chronoSeqName = $chronoIdName . "_seq";
$chrono = DatabaseModel::createOrIncreaseChrono(['chronoIdName' => $chronoIdName, 'chronoSeqName' => $chronoSeqName]);
return $entityId . "/" . $chrono;
}
public static function getChronoCategory($categoryId)
{
$chronoId = "chrono_{$categoryId}_" . date('Y') . "_seq";
$chrono = DatabaseModel::createOrIncreaseChrono(['chronoId' => $chronoId]);
$chronoIdName = "chrono_{$categoryId}_" . date('Y');
$chronoSeqName = $chronoIdName . "_seq";
$chrono = DatabaseModel::createOrIncreaseChrono(['chronoIdName' => $chronoIdName, 'chronoSeqName' => $chronoSeqName]);
return "/" . $chrono;
}
......
......@@ -25,10 +25,10 @@ class DatabaseModel
*/
public static function createOrIncreaseChrono(array $args)
{
ValidatorModel::notEmpty($args, ['chronoId']);
ValidatorModel::stringType($args, ['chronoId']);
ValidatorModel::notEmpty($args, ['chronoIdName', 'chronoSeqName']);
ValidatorModel::stringType($args, ['chronoIdName', 'chronoSeqName']);
$query = "SELECT increase_chrono('{$args['chronoId']}')";
$query = "SELECT increase_chrono('{$args['chronoSeqName']}' ,'{$args['chronoIdName']}')";
$db = new DatabasePDO();
$stmt = $db->query($query);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment