From bf9dbfebd40ac009f1ce54293c4322622047dcab Mon Sep 17 00:00:00 2001 From: Ramiro <rbentancor@globaluy.com> Date: Sun, 24 Oct 2021 18:36:13 -0300 Subject: [PATCH] Faqs dto, service, model --- src/DTOs/FAQDTO.ts | 1 + src/Loaders/ParameterDataBaseLoader.ts | 2 +- src/Models/FAQ.ts | 4 ++++ src/Services/FAQService.ts | 22 ++++++++++++++++++---- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/DTOs/FAQDTO.ts b/src/DTOs/FAQDTO.ts index 33cdffa..e6079a4 100644 --- a/src/DTOs/FAQDTO.ts +++ b/src/DTOs/FAQDTO.ts @@ -1,4 +1,5 @@ export interface FAQDTO { question: string; answer: string; + position: number; } diff --git a/src/Loaders/ParameterDataBaseLoader.ts b/src/Loaders/ParameterDataBaseLoader.ts index ec1470a..09dc62e 100644 --- a/src/Loaders/ParameterDataBaseLoader.ts +++ b/src/Loaders/ParameterDataBaseLoader.ts @@ -49,7 +49,7 @@ function initParameterDataBase(): void { console.log(err); }); }); - FAQ.sync(); + FAQ.sync({ force: true }); } export default { initParameterDataBase }; diff --git a/src/Models/FAQ.ts b/src/Models/FAQ.ts index ee2e2f9..4dc96b7 100644 --- a/src/Models/FAQ.ts +++ b/src/Models/FAQ.ts @@ -16,6 +16,10 @@ FAQ.init({ answer: { type: DataTypes.STRING, }, + position: { + type: DataTypes.INTEGER, + unique: true, + }, createdBy: { type: DataTypes.INTEGER, }, diff --git a/src/Services/FAQService.ts b/src/Services/FAQService.ts index 2b1ac31..8734d1c 100644 --- a/src/Services/FAQService.ts +++ b/src/Services/FAQService.ts @@ -1,11 +1,13 @@ -import FAQ from '../Models/FAQ'; +import { Op } from 'sequelize'; import { FAQDTO } from '../DTOs/FAQDTO'; +import FAQ from '../Models/FAQ'; const list = (): Promise<FAQ[]> => FAQ.findAll({ - attributes: ['id', 'question', 'answer', 'createdAt'], + attributes: ['id', 'question', 'answer', 'position', 'createdAt'], where: { deletedAt: null, }, + order: ['position'], }); const create = (createDto: FAQDTO): Promise<FAQ> => FAQ.create(createDto); @@ -20,9 +22,21 @@ const update = async (id: number, createDto: FAQDTO): Promise<FAQ | null> => { if (!faq) { return null; } - const { question, answer } = createDto; + const { question, answer, position } = createDto; + const positionFaq: FAQ | null = await FAQ.findOne({ + where: { + id: { + [Op.ne]: id, + }, + position, + deletedAt: null, + }, + }); + if (positionFaq) { + return null; + } return faq.update({ - question, answer, + question, answer, position, }); }; -- GitLab