Skip to content
Snippets Groups Projects
Commit 03303c4c authored by Ramiro's avatar Ramiro
Browse files

FAQController, etc

parent 4dc83e80
No related branches found
No related tags found
No related merge requests found
import { Request, Response, Router } from 'express';
import FAQ from '../Models/FAQ';
import FAQService from '../Services/FAQService';
import { FAQDTO } from '../DTOs/FAQDTO';
const router = Router();
const list = async (req: Request, res: Response): Promise<Response> => {
try {
const faqs: FAQ[] = await FAQService.list();
return res.status(200).send(faqs);
} catch (error) {
console.log('error');
return res.status(400).send('list error');
}
};
const create = async (req: Request, res: Response): Promise<Response> => {
try {
const dto: FAQDTO = req.body;
const newFAQ: FAQ = await FAQService.create(dto);
return res.status(200).send(newFAQ);
} catch (error) {
console.log(error);
return res.status(400).send('create error');
}
};
const update = async (req: Request, res: Response): Promise<Response> => {
try {
const dto: FAQDTO = req.body;
const faqId = Number(req.params.id);
const updatedFAQ: FAQ | null = await FAQService.update(faqId, dto);
if (updatedFAQ) {
return res.status(200).send(updatedFAQ);
}
return res.status(400).send('id error');
} catch (error) {
console.log(error);
return res.status(400).send('update error');
}
};
const deleteFAQ = async (req: Request, res: Response): Promise<Response> => {
try {
const faqId = Number(req.params.id);
const success: boolean = await FAQService.deleteFAQ(faqId);
if (success) {
return res.status(200).send(success);
}
return res.status(400).send(success);
} catch (error) {
return res.status(400).send('delete error');
}
};
router
.get('/', list)
.post('/', create);
router
.put('/:id', update)
.delete('/:id', deleteFAQ);
export default router;
export interface FAQDTO {
question: string;
answer: string;
}
......@@ -6,6 +6,7 @@ import EquationConstantDTO from '../DTOs/EquationConstantDTO';
import DefaultExtraData from '../Models/DefaultExtraData';
import DefaultWeight from '../Models/DefaultWeight';
import EquationConstant from '../Models/EquationConstant';
import FAQ from '../Models/FAQ';
import CSVParser from './CSVParser';
function initParameterDataBase(): void {
......@@ -48,6 +49,7 @@ function initParameterDataBase(): void {
console.log(err);
});
});
FAQ.sync();
}
export default { initParameterDataBase };
import { DataTypes, Model, NOW } from 'sequelize';
import sequelize from '../Loaders/ParameterDataBase';
class FAQ extends Model {}
FAQ.init({
id: {
type: DataTypes.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true,
},
question: {
type: DataTypes.STRING,
},
answer: {
type: DataTypes.STRING,
},
createdBy: {
type: DataTypes.INTEGER,
},
updatedBy: {
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: null,
},
createdAt: {
type: DataTypes.DATE,
defaultValue: NOW,
},
updatedAt: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: null,
},
deletedAt: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: null,
},
}, {
sequelize,
modelName: 'FAQ',
});
export default FAQ;
import FAQ from '../Models/FAQ';
import { FAQDTO } from '../DTOs/FAQDTO';
const list = (): Promise<FAQ[]> => FAQ.findAll({
attributes: ['id', 'question', 'answer', 'createdAt'],
where: {
deletedAt: null,
},
});
const create = (createDto: FAQDTO): Promise<FAQ> => FAQ.create(createDto);
const update = async (id: number, createDto: FAQDTO): Promise<FAQ | null> => {
const faq: FAQ | null = await FAQ.findOne({
where: {
id,
deletedAt: null,
},
});
if (!faq) {
return null;
}
const { question, answer } = createDto;
return faq.update({
question, answer,
});
};
const deleteFAQ = async (id: number): Promise<boolean> => {
const faq: FAQ | null = await FAQ.findOne({
where: {
id,
deletedAt: null,
},
});
if (!faq) {
return false;
}
await faq.update({
deletedAt: new Date(),
});
return true;
};
export default {
list,
create,
update,
deleteFAQ,
};
......@@ -2,6 +2,7 @@ import { Request, Response, Router } from 'express';
import SheetController from './Controllers/SheetController';
import CalculatorController from './Controllers/CalculatorController';
import ParameterController from './Controllers/ParameterController';
import FAQController from './Controllers/FAQController';
const router = Router();
......@@ -15,4 +16,6 @@ router.use('/repCalculator', CalculatorController);
router.use('/parameters', ParameterController);
router.use('/faqs', FAQController);
export default router;
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