import { dataSource } from "../../../data-source"; import { query } from "../../../entity/settings/query"; import DatabaseActionException from "../../../exceptions/databaseActionException"; import InternalException from "../../../exceptions/internalException"; import { CreateQueryStoreCommand, DeleteQueryStoreCommand, UpdateQueryStoreCommand } from "./queryStoreCommand"; export default abstract class QueryStoreCommandHandler { /** * @description create queryStore * @param {CreateQueryStoreCommand} createQueryStore * @returns {Promise} */ static async create(createQueryStore: CreateQueryStoreCommand): Promise { return await dataSource .createQueryBuilder() .insert() .into(query) .values({ title: createQueryStore.title, query: typeof createQueryStore.query == "string" ? createQueryStore.query : JSON.stringify(createQueryStore.query), }) .execute() .then((result) => { return result.identifiers[0].id; }) .catch((err) => { throw new DatabaseActionException("CREATE", "queryStore", err); }); } /** * @description update queryStore * @param {UpdateQueryStoreCommand} updateQueryStore * @returns {Promise} */ static async update(updateQueryStore: UpdateQueryStoreCommand): Promise { return await dataSource .createQueryBuilder() .update(query) .set({ query: typeof updateQueryStore.query == "string" ? updateQueryStore.query : JSON.stringify(updateQueryStore.query), }) .where("id = :id", { id: updateQueryStore.id }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("UPDATE", "queryStore", err); }); } /** * @description delete queryStore * @param {DeleteQueryStoreCommand} deleteQueryStore * @returns {Promise} */ static async delete(deleteQueryStore: DeleteQueryStoreCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(query) .where("id = :id", { id: deleteQueryStore.id }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("DELETE", "queryStore", err); }); } }