import { dataSource } from "../../../data-source"; import { api } from "../../../entity/user/api"; import InternalException from "../../../exceptions/internalException"; import { CreateApiCommand, DeleteApiCommand, UpdateApiCommand } from "./apiCommand"; export default abstract class ApiCommandHandler { /** * @description create api * @param {CreateApiCommand} createApi * @returns {Promise} */ static async create(createApi: CreateApiCommand): Promise { return await dataSource .createQueryBuilder() .insert() .into(api) .values({ token: createApi.token, title: createApi.title, expiry: createApi.expiry, }) .execute() .then((result) => { return result.identifiers[0].token; }) .catch((err) => { throw new InternalException("Failed creating api", err); }); } /** * @description update api * @param {UpdateApiCommand} updateApi * @returns {Promise} */ static async update(updateApi: UpdateApiCommand): Promise { return await dataSource .createQueryBuilder() .update(api) .set({ title: updateApi.title, expiry: updateApi.expiry, }) .where("id = :id", { id: updateApi.id }) .execute() .then(() => {}) .catch((err) => { throw new InternalException("Failed updating api", err); }); } /** * @description delete api * @param {DeleteApiCommand} deleteApi * @returns {Promise} */ static async delete(deleteApi: DeleteApiCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(api) .where("id = :id", { id: deleteApi.id }) .execute() .then(() => {}) .catch((err) => { throw new InternalException("Failed deleting api", err); }); } }