{"version":3,"file":"getManyViewScope.mjs","names":[],"sources":["../../../../src/apis/campaigns/scopes/getManyViewScope.ts"],"sourcesContent":["import type { IncludeItem, ListQuery, WhereClause } from '../../../core'\nimport type { Campaign, CampaignStatus } from '../types'\n\nexport type GetManyPaginatedFilters = {\n  title?: string\n  status?: CampaignStatus\n  serviceId?: string\n  createdAtFrom?: string\n  createdAtTo?: string\n  startedAtFrom?: string\n  startedAtTo?: string\n  quality?: string\n  page?: number\n  perPage?: number\n  sort?: string\n  order?: 'ASC' | 'DESC'\n  paginate?: boolean\n}\n\nexport function getManyViewScope(\n  filters: GetManyPaginatedFilters = {},\n): ListQuery<Campaign> & { paginate: true } {\n  const where: WhereClause<Campaign> = {}\n  const $and: WhereClause<Campaign>[] = []\n\n  if (filters.title) {\n    where.title = { $iLike: `%${filters.title}%` }\n  }\n  if (filters.status) {\n    where.status = filters.status\n  }\n  if (filters.serviceId) {\n    where.serviceId = filters.serviceId\n  }\n  if (filters.createdAtFrom) {\n    $and.push({ createdAt: { $gte: filters.createdAtFrom } })\n  }\n  if (filters.createdAtTo) {\n    $and.push({ createdAt: { $lte: filters.createdAtTo } })\n  }\n  if (filters.startedAtFrom) {\n    $and.push({ startedAt: { $gte: filters.startedAtFrom } })\n  }\n  if (filters.startedAtTo) {\n    $and.push({ startedAt: { $lte: filters.startedAtTo } })\n  }\n\n  if ($and.length > 0) {\n    where.$and = $and\n  }\n\n  const include: IncludeItem<Campaign>[] = [\n    'service',\n    'tags',\n    {\n      model: 'messages',\n      ...(filters.quality && { required: true }),\n      include: [\n        'file',\n        {\n          model: 'hsm',\n          ...(filters.quality && { where: { quality: filters.quality }, required: true }),\n        },\n      ],\n    },\n    { model: 'createdBy', attributes: ['id', 'name'] },\n    { model: 'sentBy', attributes: ['id', 'name'] },\n  ]\n\n  return {\n    where,\n    order: [[(filters.sort ?? 'createdAt') as keyof Campaign & string, filters.order ?? 'DESC']],\n    page: filters.page ?? 1,\n    perPage: filters.perPage ?? 15,\n    paginate: true as const,\n    ...(filters.quality && { subQuery: false }),\n    include,\n  }\n}\n"],"mappings":";AAmBA,SAAgB,iBACd,UAAmC,EAAE,EACK;CAC1C,MAAM,QAA+B,EAAE;CACvC,MAAM,OAAgC,EAAE;AAExC,KAAI,QAAQ,MACV,OAAM,QAAQ,EAAE,QAAQ,IAAI,QAAQ,MAAM,IAAI;AAEhD,KAAI,QAAQ,OACV,OAAM,SAAS,QAAQ;AAEzB,KAAI,QAAQ,UACV,OAAM,YAAY,QAAQ;AAE5B,KAAI,QAAQ,cACV,MAAK,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,eAAe,EAAE,CAAC;AAE3D,KAAI,QAAQ,YACV,MAAK,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,aAAa,EAAE,CAAC;AAEzD,KAAI,QAAQ,cACV,MAAK,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,eAAe,EAAE,CAAC;AAE3D,KAAI,QAAQ,YACV,MAAK,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,aAAa,EAAE,CAAC;AAGzD,KAAI,KAAK,SAAS,EAChB,OAAM,OAAO;CAGf,MAAM,UAAmC;EACvC;EACA;EACA;GACE,OAAO;GACP,GAAI,QAAQ,WAAW,EAAE,UAAU,MAAM;GACzC,SAAS,CACP,QACA;IACE,OAAO;IACP,GAAI,QAAQ,WAAW;KAAE,OAAO,EAAE,SAAS,QAAQ,SAAS;KAAE,UAAU;KAAM;IAC/E,CACF;GACF;EACD;GAAE,OAAO;GAAa,YAAY,CAAC,MAAM,OAAO;GAAE;EAClD;GAAE,OAAO;GAAU,YAAY,CAAC,MAAM,OAAO;GAAE;EAChD;AAED,QAAO;EACL;EACA,OAAO,CAAC,CAAE,QAAQ,QAAQ,aAAyC,QAAQ,SAAS,OAAO,CAAC;EAC5F,MAAM,QAAQ,QAAQ;EACtB,SAAS,QAAQ,WAAW;EAC5B,UAAU;EACV,GAAI,QAAQ,WAAW,EAAE,UAAU,OAAO;EAC1C;EACD"}