import { dataSource } from "../data-source"; import { newsletter } from "../entity/newsletter"; import InternalException from "../exceptions/internalException"; export default abstract class NewsletterService { /** * @description get all newsletters * @returns {Promise<[Array, number]>} */ static async getAll(offset: number = 0, count: number = 25): Promise<[Array, number]> { return await dataSource .getRepository(newsletter) .createQueryBuilder("newsletter") .offset(offset) .limit(count) .getManyAndCount() .then((res) => { return res; }) .catch((err) => { throw new InternalException("newsletters not found", err); }); } /** * @description get newsletter by id * @returns {Promise} */ static async getById(id: number): Promise { return await dataSource .getRepository(newsletter) .createQueryBuilder("newsletter") .leftJoinAndSelect("newsletter.recipientsByQuery", "query") .where("newsletter.id = :id", { id: id }) .getOneOrFail() .then((res) => { return res; }) .catch((err) => { throw new InternalException("newsletter not found by id", err); }); } }