diff --git a/src/DTOs/FAQDTO.ts b/src/DTOs/FAQDTO.ts index 33cdffa9c234c994718d03b10e13db4adb83fb03..e6079a40baffa9f058677f9e3b258b5886c466a7 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 ec1470a80eecbe55748e44ace9e4404aa9262e04..09dc62eec721966fb85d602d1f7c2d81e98bd79f 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 ee2e2f92e696fc34de2cabcd17752a7862ced28f..4dc96b7fccc4e15c5e186ea6057b7746ffcb0ddf 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 2b1ac31f68bbda3efe58b535e847341628c6e064..8734d1ca31f91b438d16cf9f87ba945ca760c7fe 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, }); };