Sorting and Filtering
NestJSX/Crud is a robust library designed for creating high-performance and scalable APIs. With NestJSX/Crud, API consumers can take advantage of a flexible and intuitive approach to querying data.
This library streamlines the process of searching, sorting, and paginating data to cater to the exact requirements of the API consumer. This feature saves valuable time by allowing the API consumer to bypass irrelevant data, ensuring only the necessary data is obtained.
We encourage use of the search
parameter (s=...
), and do not allow use of the deprecated filter
parameter.
Search Examples
Find all active Appointments created or updated since March 15th, 2023 at 8am MST (since created appts also have updated lastChangeDateTime)
s={"lastChangedDateTime":{"$gt":"2023-03-15T08:00:00.000-07:00"}}
Find all soft-deleted (inActive) appointments updated since a date/time (isActive:false indicates soft-deleted)
s={"$and":[{"lastChangedDateTime": {"$gt":"2023-07-7T00:00:00.000Z"}},{"isActive":false}]}
Find all appointments changed since a date time (both active and inactive). This is useful for integration partners with recurring series who need to know future appointments in the series have been removed
s={"$and":[{"lastChangedDateTime": {"$gt":"2023-07-7T00:00:00.000Z"}},{"$or":[{"isActive":true},{"isActive":false}]}]}
Find all Appointment where the tags
are empty
s={"tags": {"$or": {"$isnull": true, "$eq": "{}"}}}
Find all Appointments where it includes a tag of Late
s={"tags":{"$contL":"Late"}}
Find all appointments in Scheduled
status set to start after March 15th, 2023 at 8am MST
s={"$and":[{"status":"Scheduled"},{"start":{"$gt":"2023-03-15T08:00:00.000-07:00"}}]}
Join Examples
To return data from other tables without the need to make a secondary query, the API consumer can join specific tables together and request only the fields necessary.
Get the appointment with the carrier and company. This will return a nested User
with a nested Company
in the result
for
each appointment.
Order matters here. You must first include user
to get to user.company
.
join=user&join=user.company
To get just the user's email and company's name, you can use the ||
operator.
Because user.companyId = company.id
you must at least include companyId
on user
join=user||email,companyId&join=user.company||name
Other Examples
To get an appointment's refNumber (PO), start, lastChangedDateTime, and carrier company name
s={"start": {"$gt":"2023-03-15T00:00:00.000Z"}}&join=user||companyId&join=user.company||name&fields=refNumber,lastChangedDateTime,start