From f54d76a83d18a8f7acc0b75c7e0c469f6d88dea0 Mon Sep 17 00:00:00 2001 From: Patrick Fic <> Date: Tue, 13 Apr 2021 17:07:24 -0700 Subject: [PATCH] IO-899 Refactor ccc paginated query --- .../contracts-list.component.jsx | 9 ++---- client/src/graphql/cccontracts.queries.js | 16 +++------- .../contracts/contracts.page.container.jsx | 29 +++++++------------ .../1618357029467_run_sql_migration/down.yaml | 1 + .../1618357029467_run_sql_migration/up.yaml | 21 ++++++++++++++ .../1618357258765_run_sql_migration/down.yaml | 1 + .../1618357258765_run_sql_migration/up.yaml | 5 ++++ .../1618357269948_run_sql_migration/down.yaml | 1 + .../1618357269948_run_sql_migration/up.yaml | 21 ++++++++++++++ .../1618357338608_run_sql_migration/down.yaml | 1 + .../1618357338608_run_sql_migration/up.yaml | 21 ++++++++++++++ .../1618358104427_run_sql_migration/down.yaml | 1 + .../1618358104427_run_sql_migration/up.yaml | 5 ++++ .../1618358164400_run_sql_migration/down.yaml | 1 + .../1618358164400_run_sql_migration/up.yaml | 21 ++++++++++++++ .../1618358356468_run_sql_migration/down.yaml | 1 + .../1618358356468_run_sql_migration/up.yaml | 21 ++++++++++++++ hasura/migrations/metadata.yaml | 3 ++ 18 files changed, 143 insertions(+), 36 deletions(-) create mode 100644 hasura/migrations/1618357029467_run_sql_migration/down.yaml create mode 100644 hasura/migrations/1618357029467_run_sql_migration/up.yaml create mode 100644 hasura/migrations/1618357258765_run_sql_migration/down.yaml create mode 100644 hasura/migrations/1618357258765_run_sql_migration/up.yaml create mode 100644 hasura/migrations/1618357269948_run_sql_migration/down.yaml create mode 100644 hasura/migrations/1618357269948_run_sql_migration/up.yaml create mode 100644 hasura/migrations/1618357338608_run_sql_migration/down.yaml create mode 100644 hasura/migrations/1618357338608_run_sql_migration/up.yaml create mode 100644 hasura/migrations/1618358104427_run_sql_migration/down.yaml create mode 100644 hasura/migrations/1618358104427_run_sql_migration/up.yaml create mode 100644 hasura/migrations/1618358164400_run_sql_migration/down.yaml create mode 100644 hasura/migrations/1618358164400_run_sql_migration/up.yaml create mode 100644 hasura/migrations/1618358356468_run_sql_migration/down.yaml create mode 100644 hasura/migrations/1618358356468_run_sql_migration/up.yaml diff --git a/client/src/components/contracts-list/contracts-list.component.jsx b/client/src/components/contracts-list/contracts-list.component.jsx index d7ca3989d..02f87dbef 100644 --- a/client/src/components/contracts-list/contracts-list.component.jsx +++ b/client/src/components/contracts-list/contracts-list.component.jsx @@ -6,7 +6,6 @@ import { useTranslation } from "react-i18next"; import { Link, useHistory, useLocation } from "react-router-dom"; import { DateTimeFormatter } from "../../utils/DateFormatter"; import { alphaSort } from "../../utils/sorters"; -import TimeTicketsDatesSelector from "../ticket-tickets-dates-selector/time-tickets-dates-selector.component"; export default function ContractsList({ loading, contracts, refetch, total }) { const [state, setState] = useState({ @@ -126,11 +125,6 @@ export default function ContractsList({ loading, contracts, refetch, total }) { - - - {search.search && ( <> @@ -146,6 +140,9 @@ export default function ContractsList({ loading, contracts, refetch, total }) { )} + { diff --git a/client/src/graphql/cccontracts.queries.js b/client/src/graphql/cccontracts.queries.js index d7c4113bc..a133ea55a 100644 --- a/client/src/graphql/cccontracts.queries.js +++ b/client/src/graphql/cccontracts.queries.js @@ -144,23 +144,16 @@ export const QUERY_CONTRACT_BY_PK = gql` export const QUERY_ACTIVE_CONTRACTS_PAGINATED = gql` query QUERY_ACTIVE_CONTRACTS_PAGINATED( + $search: String $offset: Int $limit: Int $order: [cccontracts_order_by!]! - $start: timestamptz - $end: timestamptz ) { - cccontracts( + search_cccontracts( + args: { search: $search } offset: $offset limit: $limit order_by: $order - where: { - _or: [ - { actualreturn: { _lte: $end } } - { actualreturn: { _is_null: true } } - ] - start: { _gte: $start } - } ) { agreementnumber courtesycarid @@ -171,7 +164,6 @@ export const QUERY_ACTIVE_CONTRACTS_PAGINATED = gql` jobid job { id - ro_number ownr_fn ownr_ln @@ -190,7 +182,7 @@ export const QUERY_ACTIVE_CONTRACTS_PAGINATED = gql` plate } } - cccontracts_aggregate { + search_cccontracts_aggregate(args: { search: $search }) { aggregate { count(distinct: true) } diff --git a/client/src/pages/contracts/contracts.page.container.jsx b/client/src/pages/contracts/contracts.page.container.jsx index a0b8dfe3f..726567cfe 100644 --- a/client/src/pages/contracts/contracts.page.container.jsx +++ b/client/src/pages/contracts/contracts.page.container.jsx @@ -1,18 +1,17 @@ import { useQuery } from "@apollo/client"; +import queryString from "query-string"; import React, { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; +import { useLocation } from "react-router-dom"; import AlertComponent from "../../components/alert/alert.component"; +import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; import { QUERY_ACTIVE_CONTRACTS_PAGINATED } from "../../graphql/cccontracts.queries"; import { setBreadcrumbs, setSelectedHeader, } from "../../redux/application/application.actions"; import ContractsPageComponent from "./contracts.page.component"; -import queryString from "query-string"; -import { useLocation } from "react-router-dom"; -import moment from "moment"; -import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; const mapDispatchToProps = (dispatch) => ({ setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), @@ -21,17 +20,13 @@ const mapDispatchToProps = (dispatch) => ({ export function ContractsPageContainer({ setBreadcrumbs, setSelectedHeader }) { const searchParams = queryString.parse(useLocation().search); - const { page, sortcolumn, sortorder, start, end } = searchParams; + const { search, page, sortcolumn, sortorder } = searchParams; const { loading, error, data, refetch } = useQuery( QUERY_ACTIVE_CONTRACTS_PAGINATED, { variables: { - //search: search || "", - start: start - ? moment(start) - : moment().startOf("week").subtract(7, "days"), - end: end ? moment(end) : moment().endOf("week"), + search: search || "", offset: page ? (page - 1) * 25 : 0, limit: 25, order: [ @@ -62,14 +57,12 @@ export function ContractsPageContainer({ setBreadcrumbs, setSelectedHeader }) { if (error) return ; return ( -
- -
+
); } diff --git a/hasura/migrations/1618357029467_run_sql_migration/down.yaml b/hasura/migrations/1618357029467_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1618357029467_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1618357029467_run_sql_migration/up.yaml b/hasura/migrations/1618357029467_run_sql_migration/up.yaml new file mode 100644 index 000000000..96908682e --- /dev/null +++ b/hasura/migrations/1618357029467_run_sql_migration/up.yaml @@ -0,0 +1,21 @@ +- args: + cascade: false + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_cccontracts (search text)\n\tRETURNS + SETOF jobs\n\tLANGUAGE plpgsql\n\tSTABLE\n\tAS $function$\nBEGIN\n\tIF search + = '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts + c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts + contracts,\n\t\t\tcourtesycars cars,\n\t\t\tjobs jobs\n\t\tWHERE (jobs.ro_number + ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR + jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%' + || search || '%'\n\t\t\tOR contracts.agreementnumber ILIKE '%' || search || + '%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR contracts.driver_ln + ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE '%' || search || + '%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR cars.model ILIKE + '%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND contracts.courtesycarid + = cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;" + type: run_sql +- args: + name: search_cccontracts + schema: public + type: track_function diff --git a/hasura/migrations/1618357258765_run_sql_migration/down.yaml b/hasura/migrations/1618357258765_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1618357258765_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1618357258765_run_sql_migration/up.yaml b/hasura/migrations/1618357258765_run_sql_migration/up.yaml new file mode 100644 index 000000000..98030d938 --- /dev/null +++ b/hasura/migrations/1618357258765_run_sql_migration/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: drop function public.search_cccontracts; + type: run_sql diff --git a/hasura/migrations/1618357269948_run_sql_migration/down.yaml b/hasura/migrations/1618357269948_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1618357269948_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1618357269948_run_sql_migration/up.yaml b/hasura/migrations/1618357269948_run_sql_migration/up.yaml new file mode 100644 index 000000000..b9a342519 --- /dev/null +++ b/hasura/migrations/1618357269948_run_sql_migration/up.yaml @@ -0,0 +1,21 @@ +- args: + cascade: true + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_cccontracts(search text)\n RETURNS + SETOF jobs\n LANGUAGE plpgsql\n STABLE\nAS $function$\nBEGIN\n\tIF search = + '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts + c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\tcourtesycars + cars,\n\t\t\tjobs jobs,\n\t\t\tcccontracts contracts\n\t\t\t\n\t\tWHERE (jobs.ro_number + ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR + jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%' + || search || '%'\n\t\t\tOR contracts.agreementnumber ILIKE '%' || search || + '%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR contracts.driver_ln + ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE '%' || search || + '%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR cars.model ILIKE + '%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND contracts.courtesycarid + = cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;" + type: run_sql +- args: + name: search_cccontracts + schema: public + type: track_function diff --git a/hasura/migrations/1618357338608_run_sql_migration/down.yaml b/hasura/migrations/1618357338608_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1618357338608_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1618357338608_run_sql_migration/up.yaml b/hasura/migrations/1618357338608_run_sql_migration/up.yaml new file mode 100644 index 000000000..573cf9bf4 --- /dev/null +++ b/hasura/migrations/1618357338608_run_sql_migration/up.yaml @@ -0,0 +1,21 @@ +- args: + cascade: false + read_only: false + sql: "drop function public.search_cccontracts;\nCREATE OR REPLACE FUNCTION public.search_cccontracts(search + text)\n RETURNS SETOF cccontracts\n LANGUAGE plpgsql\n STABLE\nAS $function$\nBEGIN\n\tIF + search = '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts + c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\tcourtesycars + cars,\n\t\t\tjobs jobs,\n\t\t\tcccontracts contracts\n\t\t\t\n\t\tWHERE (jobs.ro_number + ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR + jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%' + || search || '%'\n\t\t\tOR contracts.agreementnumber ILIKE '%' || search || + '%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR contracts.driver_ln + ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE '%' || search || + '%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR cars.model ILIKE + '%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND contracts.courtesycarid + = cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;" + type: run_sql +- args: + name: search_cccontracts + schema: public + type: track_function diff --git a/hasura/migrations/1618358104427_run_sql_migration/down.yaml b/hasura/migrations/1618358104427_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1618358104427_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1618358104427_run_sql_migration/up.yaml b/hasura/migrations/1618358104427_run_sql_migration/up.yaml new file mode 100644 index 000000000..98030d938 --- /dev/null +++ b/hasura/migrations/1618358104427_run_sql_migration/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: drop function public.search_cccontracts; + type: run_sql diff --git a/hasura/migrations/1618358164400_run_sql_migration/down.yaml b/hasura/migrations/1618358164400_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1618358164400_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1618358164400_run_sql_migration/up.yaml b/hasura/migrations/1618358164400_run_sql_migration/up.yaml new file mode 100644 index 000000000..0aa518ce0 --- /dev/null +++ b/hasura/migrations/1618358164400_run_sql_migration/up.yaml @@ -0,0 +1,21 @@ +- args: + cascade: false + read_only: false + sql: "CREATE OR REPLACE FUNCTION public.search_cccontracts(search text)\n RETURNS + SETOF cccontracts\n LANGUAGE plpgsql\n STABLE\nAS $function$\nBEGIN\n\tIF search + = '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts + c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\tcourtesycars + cars,\n\t\t\tjobs jobs,\n\t\t\tcccontracts contracts\n\t\t\t\n\t\tWHERE (jobs.ro_number + ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR + jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%' + || search || '%'\n\t\t\tOR (cast(contracts.agreementnumber as text)) ILIKE '%' + || search || '%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR + contracts.driver_ln ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE + '%' || search || '%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR + cars.model ILIKE '%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND + contracts.courtesycarid = cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;" + type: run_sql +- args: + name: search_cccontracts + schema: public + type: track_function diff --git a/hasura/migrations/1618358356468_run_sql_migration/down.yaml b/hasura/migrations/1618358356468_run_sql_migration/down.yaml new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/hasura/migrations/1618358356468_run_sql_migration/down.yaml @@ -0,0 +1 @@ +[] diff --git a/hasura/migrations/1618358356468_run_sql_migration/up.yaml b/hasura/migrations/1618358356468_run_sql_migration/up.yaml new file mode 100644 index 000000000..7074e7b31 --- /dev/null +++ b/hasura/migrations/1618358356468_run_sql_migration/up.yaml @@ -0,0 +1,21 @@ +- args: + cascade: true + read_only: false + sql: "DROP FUNCTION public.search_cccontracts;\n\nCREATE OR REPLACE FUNCTION public.search_cccontracts(search + text)\n RETURNS SETOF cccontracts\n LANGUAGE plpgsql\n STABLE\nAS $function$\nBEGIN\n\tIF + search = '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts + c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\tcontracts.*\n\t\tFROM\n\t\tcourtesycars + cars,\n\t\t\tjobs jobs,\n\t\t\tcccontracts contracts\n\t\t\t\n\t\tWHERE (jobs.ro_number + ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR + jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%' + || search || '%'\n\t\t\tOR (cast(contracts.agreementnumber as text)) ILIKE '%' + || search || '%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR + contracts.driver_ln ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE + '%' || search || '%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR + cars.model ILIKE '%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND + contracts.courtesycarid = cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;" + type: run_sql +- args: + name: search_cccontracts + schema: public + type: track_function diff --git a/hasura/migrations/metadata.yaml b/hasura/migrations/metadata.yaml index 500e04e28..ec450dc44 100644 --- a/hasura/migrations/metadata.yaml +++ b/hasura/migrations/metadata.yaml @@ -4226,6 +4226,9 @@ functions: - function: schema: public name: search_bills +- function: + schema: public + name: search_cccontracts - function: schema: public name: search_jobs