import { dataSource } from "../../../data-source"; import { template } from "../../../entity/settings/template"; import DatabaseActionException from "../../../exceptions/databaseActionException"; import InternalException from "../../../exceptions/internalException"; import { CreateTemplateCommand, DeleteTemplateCommand, UpdateTemplateCommand } from "./templateCommand"; export default abstract class TemplateCommandHandler { /** * @description create template * @param {CreateTemplateCommand} createTemplate * @returns {Promise} */ static async create(createTemplate: CreateTemplateCommand): Promise { return await dataSource .createQueryBuilder() .insert() .into(template) .values({ template: createTemplate.template, description: createTemplate.description, }) .execute() .then((result) => { return result.identifiers[0].id; }) .catch((err) => { throw new DatabaseActionException("CREATE", "template", err); }); } /** * @description update template * @param {UpdateTemplateCommand} updateTemplate * @returns {Promise} */ static async update(updateTemplate: UpdateTemplateCommand): Promise { return await dataSource .createQueryBuilder() .update(template) .set({ template: updateTemplate.template, description: updateTemplate.description, design: updateTemplate.design, html: updateTemplate.html, }) .where("id = :id", { id: updateTemplate.id }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("UPDATE", "template", err); }); } /** * @description delete template * @param {DeleteTemplateCommand} deleteTemplate * @returns {Promise} */ static async delete(deleteTemplate: DeleteTemplateCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(template) .where("id = :id", { id: deleteTemplate.id }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("DELETE", "template", err); }); } }