/**
  * @description Apply filters on list queries
  */
async _applyFilters({
  query,
  q,
  totalQ,
  opt,
  authData,
}: {
  q: mongoose.QueryWithFuzzySearch<EntityAlias>;
  totalQ: mongoose.QueryWithFuzzySearch<EntityAlias>;
  query: {{getRequestFullName . "List"}},
  authData: Jsm.Core.Security.AuthData,
  opt: { loadDeleted?: boolean; dontLean?: boolean; }
}): Promise<{
  q: mongoose.QueryWithFuzzySearch<EntityAlias>;
  totalQ: mongoose.QueryWithFuzzySearch<EntityAlias>;
}> {
  let { search, filters, load_deleted } = query;
  let filter: {
    q: typeof q;
    totalQ: typeof totalQ;
  };

  /**
    * @description Handle search
    */
  if (search) {
    q = q.where({ $text: { $search: search } });
    totalQ = totalQ.where({ $text: { $search: search } });
  }

  /**
    * @description fixing filters article
    */
  filters = deepSanitizeObjectValues(fixFiltersObject(filters));

  /**
    * @description Inject attributes in the filters
    */
  {{#if ENTITY_META.is_creatable}}
  if (!load_deleted && !opt.loadDeleted && !("is_deleted" in filters))
    filters.is_deleted = false;
  if (authData?.current?.app) filters.app = authData?.current.app._id;

  // -- FILTER_BY: is_deleted
  filter = createBooleanFilter<DocumentProperties>(q, totalQ, filters.is_deleted, 'is_deleted');
  q = filter.q; 
  totalQ = filter.totalQ;
  {{/if}}

    {{injectEntityFilters .}}

  return this._applyAuthDataBasedFilters({ query, q, totalQ, opt, authData });
}