From 3a497bb80e5b09d3b76d7d09be7630f0f2e1f144 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Fri, 14 Aug 2020 16:34:06 +0200 Subject: [PATCH] FEAT #14537 TIME 0:20 refactor registered mail sql --- migration/20.10/2010.sql | 32 ++++++++--------- rest/index.php | 2 +- sql/structure.sql | 36 +++++++++---------- .../RegisteredNumberRangeController.php | 10 ++++-- .../models/IssuingSiteEntitiesModel.php | 6 ++-- .../models/IssuingSiteModel.php | 12 +++---- .../models/RegisteredNumberRangeModel.php | 12 +++---- .../registered-mail.component.ts | 2 +- 8 files changed, 58 insertions(+), 54 deletions(-) diff --git a/migration/20.10/2010.sql b/migration/20.10/2010.sql index 89473782885..02fcc953004 100755 --- a/migration/20.10/2010.sql +++ b/migration/20.10/2010.sql @@ -189,8 +189,8 @@ ALTER TABLE templates ADD COLUMN subject character varying(255); UPDATE groupbasket SET list_event_data = '{"canUpdateDocuments":true}' WHERE list_event_data->'canUpdateDocument' = true; /* REGISTERED MAIL */ -DROP TABLE IF EXISTS issuing_sites; -CREATE TABLE IF NOT EXISTS issuing_sites ( +DROP TABLE IF EXISTS registered_mail_issuing_sites; +CREATE TABLE IF NOT EXISTS registered_mail_issuing_sites ( id SERIAL NOT NULL, label CHARACTER VARYING(256) NOT NULL, post_office_label CHARACTER VARYING(256), @@ -202,28 +202,28 @@ CREATE TABLE IF NOT EXISTS issuing_sites ( address_postcode CHARACTER VARYING(256), address_town CHARACTER VARYING(256), address_country CHARACTER VARYING(256), - CONSTRAINT issuing_sites_pkey PRIMARY KEY (id) + CONSTRAINT registered_mail_issuing_sites_pkey PRIMARY KEY (id) ); -DROP TABLE IF EXISTS issuing_sites_entities; -CREATE TABLE IF NOT EXISTS issuing_sites_entities ( +DROP TABLE IF EXISTS registered_mail_issuing_sites_entities; +CREATE TABLE IF NOT EXISTS registered_mail_issuing_sites_entities ( id SERIAL NOT NULL, site_id INTEGER NOT NULL, entity_id INTEGER NOT NULL, - CONSTRAINT issuing_sites_entities_pkey PRIMARY KEY (id), - CONSTRAINT issuing_sites_entities_unique_key UNIQUE (site_id, entity_id) + CONSTRAINT registered_mail_issuing_sites_entities_pkey PRIMARY KEY (id), + CONSTRAINT registered_mail_issuing_sites_entities_unique_key UNIQUE (site_id, entity_id) ); -DROP TABLE IF EXISTS registered_number_range; -CREATE TABLE IF NOT EXISTS registered_number_range ( +DROP TABLE IF EXISTS registered_mail_number_range; +CREATE TABLE IF NOT EXISTS registered_mail_number_range ( id SERIAL NOT NULL, type CHARACTER VARYING(15) NOT NULL, - tracking_account_number CHARACTER VARYING(256), - range_start INTEGER, - range_end INTEGER, - creator INTEGER, - created timestamp without time zone DEFAULT CURRENT_TIMESTAMP, - site_id INTEGER, - status CHARACTER VARYING(10), + tracking_account_number CHARACTER VARYING(256) NOT NULL, + range_start INTEGER NOT NULL, + range_end INTEGER NOT NULL, + creator INTEGER NOT NULL, + creation_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + site_id INTEGER NOT NULL, + status CHARACTER VARYING(10) NOT NULL, current_number INTEGER, CONSTRAINT registered_number_range_pkey PRIMARY KEY (id), CONSTRAINT registered_number_range_unique_key UNIQUE (tracking_account_number) diff --git a/rest/index.php b/rest/index.php index 1632bd3b452..7cb45b1cf58 100755 --- a/rest/index.php +++ b/rest/index.php @@ -626,7 +626,7 @@ $app->get('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredN $app->post('/registeredMail/ranges', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':create'); $app->put('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':update'); $app->delete('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':delete'); -$app->get('/registeredMail/ranges/last/type/{type}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':getLastNumberByType'); +$app->get('/registeredMail/ranges/type/{type}/last', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':getLastNumberByType'); $app->get('/registeredMail/sites/type/{type}', \RegisteredMail\controllers\IssuingSiteController::class . ':getByType'); $app->get('/registeredMail/countries', \RegisteredMail\controllers\RegisteredMailController::class . ':getCountries'); diff --git a/sql/structure.sql b/sql/structure.sql index 59b710cd7b6..34694b89173 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -1407,7 +1407,7 @@ CREATE TABLE users_followed_resources ) WITH (OIDS=FALSE); -CREATE TABLE IF NOT EXISTS issuing_sites +CREATE TABLE IF NOT EXISTS registered_mail_issuing_sites ( id SERIAL NOT NULL, label CHARACTER VARYING(256) NOT NULL, @@ -1420,29 +1420,29 @@ CREATE TABLE IF NOT EXISTS issuing_sites address_postcode CHARACTER VARYING(256), address_town CHARACTER VARYING(256), address_country CHARACTER VARYING(256), - CONSTRAINT issuing_sites_pkey PRIMARY KEY (id) + CONSTRAINT registered_mail_issuing_sites_pkey PRIMARY KEY (id) ); -CREATE TABLE IF NOT EXISTS issuing_sites_entities +CREATE TABLE IF NOT EXISTS registered_mail_issuing_sites_entities ( id SERIAL NOT NULL, site_id INTEGER NOT NULL, entity_id INTEGER NOT NULL, - CONSTRAINT issuing_sites_entities_pkey PRIMARY KEY (id), - CONSTRAINT issuing_sites_entities_unique_key UNIQUE (site_id, entity_id) + CONSTRAINT registered_mail_issuing_sites_entities_pkey PRIMARY KEY (id), + CONSTRAINT registered_mail_issuing_sites_entities_unique_key UNIQUE (site_id, entity_id) ); -CREATE TABLE IF NOT EXISTS registered_number_range ( - id SERIAL NOT NULL, - type CHARACTER VARYING(15) NOT NULL, - tracking_account_number CHARACTER VARYING(256), - range_start INTEGER, - range_end INTEGER, - creator INTEGER, - created timestamp without time zone DEFAULT CURRENT_TIMESTAMP, - site_id INTEGER, - status CHARACTER VARYING(10), - current_number INTEGER, - CONSTRAINT registered_number_range_pkey PRIMARY KEY (id), - CONSTRAINT registered_number_range_unique_key UNIQUE (tracking_account_number) +CREATE TABLE IF NOT EXISTS registered_mail_number_range ( + id SERIAL NOT NULL, + type CHARACTER VARYING(15) NOT NULL, + tracking_account_number CHARACTER VARYING(256) NOT NULL, + range_start INTEGER NOT NULL, + range_end INTEGER NOT NULL, + creator INTEGER NOT NULL, + creation_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + site_id INTEGER NOT NULL, + status CHARACTER VARYING(10) NOT NULL, + current_number INTEGER, + CONSTRAINT registered_mail_number_range_pkey PRIMARY KEY (id), + CONSTRAINT registered_mail_number_range_unique_key UNIQUE (tracking_account_number) ); CREATE TABLE IF NOT EXISTS registered_mail_resources ( diff --git a/src/app/registeredMail/controllers/RegisteredNumberRangeController.php b/src/app/registeredMail/controllers/RegisteredNumberRangeController.php index 1ac3f845b6f..c7ff9b23b77 100644 --- a/src/app/registeredMail/controllers/RegisteredNumberRangeController.php +++ b/src/app/registeredMail/controllers/RegisteredNumberRangeController.php @@ -46,7 +46,7 @@ class RegisteredNumberRangeController 'rangeStart' => $range['range_start'], 'rangeEnd' => $range['range_end'], 'creator' => $range['creator'], - 'created' => $range['created'], + 'creationDate' => $range['creation_date'], 'status' => $range['status'], 'customerAccountNumber' => $site['account_number'], 'currentNumber' => $range['current_number'], @@ -86,7 +86,7 @@ class RegisteredNumberRangeController 'rangeStart' => $range['range_start'], 'rangeEnd' => $range['range_end'], 'creator' => $range['creator'], - 'created' => $range['created'], + 'creationDate' => $range['creation_date'], 'status' => $range['status'], 'customerAccountNumber' => $site['account_number'], 'currentNumber' => $range['current_number'], @@ -201,6 +201,9 @@ class RegisteredNumberRangeController if (!Validator::intVal()->notEmpty()->validate($body['siteId'])) { return $response->withStatus(400)->withJson(['errors' => 'Body siteId is empty or not an integer']); } + if ($body['rangeStart'] >= $body['rangeEnd']) { + return $response->withStatus(400)->withJson(['errors' => 'Body rangeStart cannot be larger than rangeEnd']); + } $site = IssuingSiteModel::getById(['id' => $body['siteId']]); if (empty($site)) { @@ -329,7 +332,8 @@ class RegisteredNumberRangeController 'select' => ['range_end'], 'where' => ['type = ?', 'status in (?)'], 'data' => [$args['type'], ['OK', 'SPD']], - 'orderBy' => ['range_end desc'] + 'orderBy' => ['range_end desc'], + 'limit' => 1 ]); if (empty($range)) { diff --git a/src/app/registeredMail/models/IssuingSiteEntitiesModel.php b/src/app/registeredMail/models/IssuingSiteEntitiesModel.php index 5710274b93f..9b2ab9b71ee 100644 --- a/src/app/registeredMail/models/IssuingSiteEntitiesModel.php +++ b/src/app/registeredMail/models/IssuingSiteEntitiesModel.php @@ -26,7 +26,7 @@ class IssuingSiteEntitiesModel return DatabaseModel::select([ 'select' => $args['select'], - 'table' => ['issuing_sites_entities'], + 'table' => ['registered_mail_issuing_sites_entities'], 'where' => empty($args['where']) ? [] : $args['where'], 'data' => empty($args['data']) ? [] : $args['data'], 'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'], @@ -41,7 +41,7 @@ class IssuingSiteEntitiesModel ValidatorModel::intVal($args, ['siteId', 'entityId']); DatabaseModel::insert([ - 'table' => 'issuing_sites_entities', + 'table' => 'registered_mail_issuing_sites_entities', 'columnsValues' => [ 'site_id' => $args['siteId'], 'entity_id' => $args['entityId'], @@ -57,7 +57,7 @@ class IssuingSiteEntitiesModel ValidatorModel::arrayType($args, ['where', 'data']); DatabaseModel::delete([ - 'table' => 'issuing_sites_entities', + 'table' => 'registered_mail_issuing_sites_entities', 'where' => $args['where'], 'data' => $args['data'] ]); diff --git a/src/app/registeredMail/models/IssuingSiteModel.php b/src/app/registeredMail/models/IssuingSiteModel.php index f5554ac9191..2b1278ea1c2 100644 --- a/src/app/registeredMail/models/IssuingSiteModel.php +++ b/src/app/registeredMail/models/IssuingSiteModel.php @@ -24,7 +24,7 @@ class IssuingSiteModel return DatabaseModel::select([ 'select' => empty($args['select']) ? ['*'] : $args['select'], - 'table' => ['issuing_sites'], + 'table' => ['registered_mail_issuing_sites'], 'where' => empty($args['where']) ? [] : $args['where'], 'data' => empty($args['data']) ? [] : $args['data'], 'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'], @@ -40,7 +40,7 @@ class IssuingSiteModel $site = DatabaseModel::select([ 'select' => empty($args['select']) ? ['*'] : $args['select'], - 'table' => ['issuing_sites'], + 'table' => ['registered_mail_issuing_sites'], 'where' => ['id = ?'], 'data' => [$args['id']] ]); @@ -57,10 +57,10 @@ class IssuingSiteModel ValidatorModel::notEmpty($args, ['label']); ValidatorModel::stringType($args, ['label']); - $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'issuing_sites_id_seq']); + $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'registered_mail_issuing_sites_id_seq']); DatabaseModel::insert([ - 'table' => 'issuing_sites', + 'table' => 'registered_mail_issuing_sites', 'columnsValues' => [ 'id' => $nextSequenceId, 'label' => $args['label'], @@ -85,7 +85,7 @@ class IssuingSiteModel ValidatorModel::arrayType($args, ['set', 'where', 'data']); DatabaseModel::update([ - 'table' => 'issuing_sites', + 'table' => 'registered_mail_issuing_sites', 'set' => empty($args['set']) ? [] : $args['set'], 'where' => $args['where'], 'data' => empty($args['data']) ? [] : $args['data'] @@ -100,7 +100,7 @@ class IssuingSiteModel ValidatorModel::arrayType($args, ['where', 'data']); DatabaseModel::delete([ - 'table' => 'issuing_sites', + 'table' => 'registered_mail_issuing_sites', 'where' => $args['where'], 'data' => $args['data'] ]); diff --git a/src/app/registeredMail/models/RegisteredNumberRangeModel.php b/src/app/registeredMail/models/RegisteredNumberRangeModel.php index 5ab2ff28105..c237a7b289d 100644 --- a/src/app/registeredMail/models/RegisteredNumberRangeModel.php +++ b/src/app/registeredMail/models/RegisteredNumberRangeModel.php @@ -24,7 +24,7 @@ class RegisteredNumberRangeModel return DatabaseModel::select([ 'select' => empty($args['select']) ? ['*'] : $args['select'], - 'table' => ['registered_number_range'], + 'table' => ['registered_mail_number_range'], 'where' => empty($args['where']) ? [] : $args['where'], 'data' => empty($args['data']) ? [] : $args['data'], 'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'], @@ -40,7 +40,7 @@ class RegisteredNumberRangeModel $site = DatabaseModel::select([ 'select' => empty($args['select']) ? ['*'] : $args['select'], - 'table' => ['registered_number_range'], + 'table' => ['registered_mail_number_range'], 'where' => ['id = ?'], 'data' => [$args['id']] ]); @@ -58,10 +58,10 @@ class RegisteredNumberRangeModel ValidatorModel::stringType($args, ['type', 'status']); ValidatorModel::intVal($args, ['rangeStart', 'rangeEnd', 'siteId', 'currentNumber']); - $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'registered_number_range_id_seq']); + $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'registered_mail_number_range_id_seq']); DatabaseModel::insert([ - 'table' => 'registered_number_range', + 'table' => 'registered_mail_number_range', 'columnsValues' => [ 'id' => $nextSequenceId, 'type' => $args['type'], @@ -84,7 +84,7 @@ class RegisteredNumberRangeModel ValidatorModel::arrayType($args, ['set', 'where', 'data']); DatabaseModel::update([ - 'table' => 'registered_number_range', + 'table' => 'registered_mail_number_range', 'set' => empty($args['set']) ? [] : $args['set'], 'where' => $args['where'], 'data' => empty($args['data']) ? [] : $args['data'] @@ -99,7 +99,7 @@ class RegisteredNumberRangeModel ValidatorModel::arrayType($args, ['where', 'data']); DatabaseModel::delete([ - 'table' => 'registered_number_range', + 'table' => 'registered_mail_number_range', 'where' => $args['where'], 'data' => $args['data'] ]); diff --git a/src/frontend/app/administration/registered-mail/registered-mail.component.ts b/src/frontend/app/administration/registered-mail/registered-mail.component.ts index 0aec4797cfd..b30fd060a79 100644 --- a/src/frontend/app/administration/registered-mail/registered-mail.component.ts +++ b/src/frontend/app/administration/registered-mail/registered-mail.component.ts @@ -162,7 +162,7 @@ export class RegisteredMailComponent implements OnInit { } getMinRange() { - this.http.get(`../rest/registeredMail/ranges/last/type/${this.adminFormGroup.controls['registeredMailType'].value}`).pipe( + this.http.get(`../rest/registeredMail/ranges/type/${this.adminFormGroup.controls['registeredMailType'].value}/last`).pipe( tap((data: any) => { if (data.lastNumber === 1) { this.minRange = data.lastNumber; -- GitLab