gqlUtils.js 1.0 KB

123456789101112131415161718192021222324252627282930
  1. const createQuery = (searchStr, searchFieldNames) => {
  2. let result = [];
  3. if (searchStr) {
  4. for (let searchFieldName of searchFieldNames) {
  5. result.push({ [searchFieldName]: searchFieldName === '_id' ? searchStr : `/${searchStr}/` });
  6. }
  7. }
  8. return result.length === 0 ? {} : { $or: result };
  9. }
  10. const createQueryExt = (searchQuery = {}, queryExt = {}) => {
  11. if (!queryExt)
  12. return searchQuery;
  13. return { $and: [searchQuery, queryExt] };
  14. }
  15. const createQueryPaging = (fromPage, pageSize, sort) => {
  16. let result = {};
  17. if (fromPage !== undefined && pageSize !== undefined) {
  18. result["skip"] = [fromPage * pageSize];
  19. result["limit"] = [pageSize];
  20. }
  21. if (sort)
  22. result["sort"] = [sort];
  23. return result;
  24. }
  25. export const createFullQuery = ({ searchStr, searchFieldNames, queryExt = {} }, { fromPage, pageSize, sort } = {}) => {
  26. return { q: JSON.stringify([createQueryExt(createQuery(searchStr, searchFieldNames), queryExt), createQueryPaging(fromPage, pageSize, sort)]) };
  27. }