import { dataSource } from "../data-source"; import { query } from "../entity/query"; import InternalException from "../exceptions/internalException"; import { CreateQueryStoreCommand, DeleteQueryStoreCommand, UpdateQueryStoreCommand } from "./queryStoreCommand"; export default abstract class QueryStoreCommandHandler { /** * @description create queryStore * @param CreateQueryStoreCommand * @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 InternalException("Failed creating queryStore", err); }); } /** * @description update queryStore * @param UpdateQueryStoreCommand * @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 InternalException("Failed updating queryStore", err); }); } /** * @description delete queryStore * @param DeleteQueryStoreCommand * @returns {Promise} */ static async delete(deletQueryStore: DeleteQueryStoreCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(query) .where("id = :id", { id: deletQueryStore.id }) .execute() .then(() => {}) .catch((err) => { throw new InternalException("Failed deleting queryStore", err); }); } }