In order to support search and filtering across the various orders tables, we'll need to create a view. The GET /orders API is for querying that view. See https://drive.google.com/open?id=1a1QO6coKWFFy6DhsOBXffa8DPBa9MSeJ for high level details of the approach.
|purchaseOrder.id||purchaseOrder.jsonb||purchaseOrder.jsonb + poLine.jsonb|
For now the metadata column will be a complete merging of json blobs from purchaseOrder and poLine. Later, we might transition this to a smaller subset of fields from those three tables.
Queries will match against the metadata column, but will return the jsonb column containing the purchaseOrder record. The DISTINCT ON functionality added to Raml Module Builder in
RMB-305 is required in order to avoid duplicates rows in the results.
- Create view when enabled for a tenant (See the attached SQL)
- implement logic to perform lookup (See the attached POC)
- The view is automatically created when the module is enabled for a tenant
- Unit tests exists and cover positive and negative scenarios, including ordering, paging, resultCounts, etc.