Skip to main content

Features Details

Some important REST feature details.

Queries

ViewAll | ViewAllPaged | SelectWhere | <table>Query | DataMesh

Following Query variants are provided in generated code.

  • ViewAll
  • ViewAllPaged
  • SelectWhere
  • <table>Query
  • DataMesh
  • FindOne
  • GetOne

ViewAll, ViewAllPaged, <table>Query are self-explanatory.

Search, Filter, Sorting

Query SelectWhere : Flexible SQL-Like Querying

Query type SelectWhere empowers developers in extending data filtering on-the-fly to any columns needed, and also empowers end-users with flexible filter selections via UI Filter Screen.

Please refer to a file from our Graphql section ...\emapi\app\dbgraphql\GraphQL_Readme.txt for full details on using it, syntax, operators supported and examples.

Some excerpts here:

* Example: searchBy string: " invQty > 100 and invLocation = 'USA' and invDate = '2022-10-20 14:20' and invCost isNotNull 0  " 
* Example: sortBy string: " invQty desc , invMinQty desc "

Data Federation | Data Mesh

A default DataMesh Query is provided in generated code. That can be easily customized further. Refer to REST APIs Customize section here.

Nested Models and Objects

Implementing Nested Objects is easy. Configure Table-to-Table Joins and Multi-Table Relations. Generate code. Complete use case via Low-Code Customize.

Please refer to One-to-many relationship section on this page for example of Nested Model.

REST Data Modeling

Please refer to common reference on Data Modeling

In this feature details page, we give examples of REST Data Modeling with 1x1, 1xM and MxM relationships.

One-to-one relationship

1x1 relationship between two tables.

1x1 Table Join example

Table Join:

Srl Left Table   Lt Tbl Id  Relationship    Right Table Rt Tbl Id   Defn Id
1 erp_inventory 5004391 1x1 erp_product 5004393 5000113

API generated: http://127.0.0.1:9080/emdbrest/ErpInventory/ErpInventoryErpProduct5000113/FindOne?invId=1

Payload:

{
"invId": 1,
"productId": 1,
"invDate": "2023-02-19T00:00:00.000+05:30",
"invQty": 10,
"invMinQty": 2,
"invCost": 50,
"invLocation": "USA",
"erpProduct": {
"productId": 1,
"productName": "Amoxicillin",
"productCategory": "Antibiotics",
"primarySupplier": "Lupin",
"productDesc": null,
"productPicture": null
}
}

One-to-many relationship

1xM relationship between two tables.

1xM Table Relation example with multiple tables

Tables Relation:

Srl Left Table  Lt Tbl Id   Relationship    Right Table Rt Tbl Id   Defn Id
1 erp_product 5004393 1xM erp_inventory 5004391 5000112
2 erp_inventory 5004391 1x1 erp_inventory_vw 5004399 5000114

API generated: http://127.0.0.1:9080/emdbrest/ErpProduct/ErpProductErpInventory1Multi/FindOne?productId=1

curl call:

curl -X 'GET' \
'http://127.0.0.1:9080/emdbrest/ErpProduct/ErpProductErpInventory1Multi/FindOne?productId=1' \
-H 'accept: application/hal+json'

Payload:

{
"productId": 1,
"productName": "Amoxicillin",
"productCategory": "Antibiotics",
"primarySupplier": "Lupin",
"productDesc": null,
"productPicture": null,
"erpInventoryErpInventoryVw": [
{
"invId": 1,
"productId": 1,
"invDate": "2023-02-19T00:00:00.000+05:30",
"invQty": 10,
"invMinQty": 2,
"invCost": 50,
"invLocation": "USA",
"erpInventoryVw": {
"invId": 1,
"productId": 1,
"productName": "Amoxicillin",
"invDate": "19/02/23",
"invQty": 10,
"invMinQty": 2,
"invCost": 50,
"invLocation": "USA"
}
},
{
"invId": 2,
"productId": 2,
"invDate": "2023-02-19T00:00:00.000+05:30",
"invQty": 20,
"invMinQty": 4,
"invCost": 100,
"invLocation": "USA",
"erpInventoryVw": {
"invId": 1,
"productId": 1,
"productName": "Amoxicillin",
"invDate": "19/02/23",
"invQty": 10,
"invMinQty": 2,
"invCost": 50,
"invLocation": "USA"
}
}
]
}

Many-to-many relationship

MxM relationship between two tables.

MxM Table Relation example

Table Join:

Srl Left Table  Lt Tbl Id   Relationship    Right Table Rt Tbl Id   Defn Id
1 erp_product 5004393 1xM erp_inventory 5004391 5000112

API generated: http://127.0.0.1:9080/emdbrest/ErpProduct/ErpProductErpInventory5000112/ViewAllPaged?page=0&size=2

Payload:

[
{
"productId": 1,
"productName": "Amoxicillin",
"productCategory": "Antibiotics",
"primarySupplier": "Lupin",
"productDesc": null,
"productPicture": null,
"erpInventory": [
{
"invId": 1,
"productId": 1,
"invDate": "19/02/23",
"invQty": 10,
"invMinQty": 2,
"invCost": 50,
"invLocation": "USA"
},
{
"invId": 2,
"productId": 1,
"invDate": "19/02/23",
"invQty": 20,
"invMinQty": 4,
"invCost": 100,
"invLocation": "USA"
}
]
},
{
"productId": 2,
"productName": "Azithromycin",
"productCategory": "Antibiotics",
"primarySupplier": "Abbot",
"productDesc": null,
"productPicture": null,
"erpInventory": [
{
"invId": 1,
"productId": 2,
"invDate": "19/02/23",
"invQty": 10,
"invMinQty": 2,
"invCost": 50,
"invLocation": "USA"
},
{
"invId": 2,
"productId": 2,
"invDate": "19/02/23",
"invQty": 20,
"invMinQty": 4,
"invCost": 100,
"invLocation": "USA"
}
]
}
]

Setup

Setup Security & Authentication

Customize - Authorize Access

  • Security - Role/User based Auth.

API Customization

Handle inserting data to 2 tables via API Created on View

Troubleshooting FAQs