diff --git a/packages/backend/src/helpers/__tests__/queryParams.test.js b/packages/backend/src/helpers/__tests__/queryParams.test.js index 3aa24302..85712ff0 100644 --- a/packages/backend/src/helpers/__tests__/queryParams.test.js +++ b/packages/backend/src/helpers/__tests__/queryParams.test.js @@ -78,7 +78,7 @@ describe("queryParams", () => { const query = "SELECT * FROM users"; const params = []; const result = applyPagination(query, params, 10, 5, "name", "DESC"); - expect(result.query).toContain("ORDER BY LOWER(name) DESC"); + expect(result.query).toContain("ORDER BY LOWER(name::varchar) DESC"); expect(result.query).toContain("LIMIT $1"); expect(result.query).toContain("OFFSET $2"); expect(result.params).toEqual([10, 5]); diff --git a/packages/backend/src/helpers/queryParams.js b/packages/backend/src/helpers/queryParams.js index 98373ce3..b5e574a4 100644 --- a/packages/backend/src/helpers/queryParams.js +++ b/packages/backend/src/helpers/queryParams.js @@ -73,7 +73,7 @@ module.exports = { ) => { const paginatedQuery = ` ${query} - ${sortBy ? `ORDER BY LOWER(${sortBy}) ${sortDirection}` : ""} + ${sortBy ? `ORDER BY LOWER(${sortBy}::varchar) ${sortDirection}` : ""} LIMIT $${params.length + 1} OFFSET $${params.length + 2}; `; @@ -114,7 +114,6 @@ module.exports = { titles, defaultParams = {}, ) => { - const defaultSortDirection = ["", "ASC", "DESC"]; const defaultLimit = 10; const defaultOffset = 0; return { @@ -125,9 +124,10 @@ module.exports = { ? (defaultParams?.offset ?? defaultOffset) : parseInt(offset, 10), sortBy: getSort(sortBy, titles, defaultParams.sortBy), - sortDirection: defaultSortDirection.includes(sortDirection) - ? sortDirection - : "", + sortDirection: getSortDirection( + sortDirection, + defaultParams.sortDirection, + ), }; }, }; @@ -141,3 +141,13 @@ const getSort = (sortBy, titles, defaultSort = "") => { } return defaultSort; }; + +const getSortDirection = (sortDirection, defaultSortDirection) => { + const possibleSortDirections = ["", "ASC", "DESC"]; + if (sortDirection) { + return possibleSortDirections.includes(sortDirection) ? sortDirection : ""; + } + return possibleSortDirections.includes(defaultSortDirection) + ? defaultSortDirection + : ""; +}; diff --git a/packages/backend/src/services/DemandeSejour.js b/packages/backend/src/services/DemandeSejour.js index 4db9f9ba..b31d84d7 100644 --- a/packages/backend/src/services/DemandeSejour.js +++ b/packages/backend/src/services/DemandeSejour.js @@ -1108,8 +1108,10 @@ module.exports.get = async (organismesId, queryParams) => { ]; const { limit, offset, sortBy, sortDirection } = sanitizePaginationParams( queryParams, + titles, { - sortBy: titles, + sortBy: "ds.edited_at", + sortDirection: "DESC", }, ); const filterParams = sanitizeFiltersParams(queryParams, titles); diff --git a/packages/backend/src/services/hebergement/Hebergement.js b/packages/backend/src/services/hebergement/Hebergement.js index a572f23b..1b536763 100644 --- a/packages/backend/src/services/hebergement/Hebergement.js +++ b/packages/backend/src/services/hebergement/Hebergement.js @@ -557,7 +557,6 @@ module.exports.getByDepartementCodes = async (departementsCodes, params) => { return rows[0]; }; - module.exports.getByUserId = async (userId, queryParams) => { log.i("getByUserId - IN", { userId }); const queryParamsWithUserId = { ...queryParams, userId }; @@ -567,6 +566,7 @@ module.exports.getByUserId = async (userId, queryParams) => { filterEnabled: true, key: "h.nom", queryKey: "nom", + sortEnabled: true, type: "default", }, { diff --git a/packages/frontend-bo/src/components/demandes-sejour/DefaultTable.vue b/packages/frontend-bo/src/components/demandes-sejour/DefaultTable.vue index 21474d22..774171f8 100644 --- a/packages/frontend-bo/src/components/demandes-sejour/DefaultTable.vue +++ b/packages/frontend-bo/src/components/demandes-sejour/DefaultTable.vue @@ -72,6 +72,8 @@ import { } from "@vao/shared"; import dayjs from "dayjs"; +const toaster = useToaster(); + const demandeSejourStore = useDemandeSejourStore(); const userStore = useUserStore(); const route = useRoute();