mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
13 KiB
13 KiB
title | position | category | fullscreen | menuTitle |
---|---|---|---|---|
GraphQL APIs | 2 | API | true | GraphQL APIs |
Features
- APIs
- Generates GraphQL APIs for ANY MySql, Postgres, MSSQL, Sqlite database 🔥
- Serves GraphQL queries irrespective of naming conventions of primary keys, foreign keys, tables etc 🔥
- Support for composite primary keys 🔥
- Usual suspects : CRUD, List, FindOne, Count, Exists, Distinct
- Pagination
- Sorting
- Column filtering - Fields 🔥
- Row filtering - Where 🔥
- Bulk insert, Bulk delete, Bulk read 🔥
- Relations - automatically detected
- Aggregate functions
- More
- Upload single file
- Upload multiple files
- Download file
- Authentication
- Access Control
GraphQL API Overview
Query
Resolver | Arguments | Returns | Description |
---|---|---|---|
TableNameList | where: String, limit: Int, offset: Int, sort: String | [TableName] | List of table rows |
TableNameRead | id:String | TableName | Get row by primary key |
TableNameExists | id: String | Boolean | Check row exists by primary key |
TableNameFindOne | where: String | TableName | Find row by where conditions |
TableNameCount | where: String | Int | Get rows count |
TableNameDistinct | columnName: String, where: String, limit: Int, offset: Int, sort: String | [TableName] | Get distinct rows based on provided column names |
TableNameGroupBy | fields: String, having: String, limit: Int, offset: Int, sort: String | [TableNameGroupBy] | Group rows by provided columns |
TableNameAggregate | columnName: String!, having: String, limit: Int, offset: Int, sort: String, func: String! | [TableNameAggregate] | Do aggregation based on provided column name aggregate function |
TableNameDistribution | min: Int, max: Int, step: Int, steps: String, columnName: String! | [distribution] | Get distributed list |
Mutations
Resolver | Arguments | Returns | Description |
---|---|---|---|
TableNameCreate | data:TableNameInput | TableName | Insert row into table |
TableNameUpdate | id:String,data:TableNameInput | TableName | Update table row using primary key |
TableNameDelete | id:String | TableName | Delete table row using primary id |
TableNameCreateBulk | data: [TableNameInput] | [Int] | Bulk row insert |
TableNameUpdateBulk | data: [TableNameInput] | [Int] | Bulk row update |
TableNameDeleteBulk | data: [TableNameInput] | [Int] | Bulk row delete |
Query Arguments
Param | Description | Default value | Example Value |
---|---|---|---|
where | Logical Expression | (colName,eq,colValue)~or(colName2,gt,colValue2) Usage: Comparison operators Usage: Logical operators |
|
limit | Number of rows to get(SQL limit value) | 10 | 20 |
offset | Offset for pagination(SQL offset value) | 0 | 20 |
sort | Sort column name, where use - as prefix for descending sort |
column_name | |
fields | Required column names in result | * | column_name_1,column_name_2 |
Comparison operators
eq - '=' - (colName,eq,colValue)
not - '!=' - (colName,ne,colValue)
gt - '>' - (colName,gt,colValue)
ge - '>=' - (colName,ge,colValue)
lt - '<' - (colName,lt,colValue)
le - '<=' - (colName,le,colValue)
is - 'is' - (colName,is,true/false/null)
isnot - 'is not' - (colName,isnot,true/false/null)
in - 'in' - (colName,in,val1,val2,val3,val4)
btw - 'between' - (colName,btw,val1,val2)
nbtw - 'not between'- (colName,nbtw,val1,val2)
like - 'like' - (colName,like,%name)
Example use of comparison operators - complex example
PaymentList(where:"(checkNumber,eq,JM555205)~or((amount,gt,200)~and(amount,lt,2000))")
Logical operators
~or - 'or'
~and - 'and'
~not - 'not'
TableNameList
CountryList {
country_id
country
last_update
}
{
"data": {
"CountryList": [
{
"country_id": 1,
"country": "Afghanistan",
"last_update": "1139978640000",
"CityCount": 1
},
{
"country_id": 2,
"country": "Algeria",
"last_update": "1139978640000",
"CityCount": 3
},
{
"country_id": 3,
"country": "American Samoa",
"last_update": "1139978640000",
"CityCount": 1
}
]
}
}
List + where
{
CountryList(where:"(country,like,United%)") {
country_id
country
last_update
CityCount
}
}
{
"data": {
"CountryList": [
{
"country_id": 101,
"country": "United Arab Emirates",
"last_update": "1139958840000",
"CityCount": 3
},
{
"country_id": 102,
"country": "United Kingdom",
"last_update": "1139958840000",
"CityCount": 8
},
{
"country_id": 103,
"country": "United States",
"last_update": "1139958840000",
"CityCount": 35
}
]
}
}
List + where + sort
{
CountryList(where:"(country,like,United%)",sort:"-country") {
country_id
country
last_update
CityCount
}
}
{
"data": {
"CountryList": [
{
"country_id": 103,
"country": "United States",
"last_update": "1139958840000",
"CityCount": 35
},
{
"country_id": 102,
"country": "United Kingdom",
"last_update": "1139958840000",
"CityCount": 8
},
{
"country_id": 101,
"country": "United Arab Emirates",
"last_update": "1139958840000",
"CityCount": 3
}
]
}
}
List + where + sort + offset
{
CountryList(where:"(country,like,United%)",sort:"-country",offset:1) {
country_id
country
last_update
CityCount
}
}
{
"data": {
"CountryList": [
{
"country_id": 102,
"country": "United Kingdom",
"last_update": "1139958840000",
"CityCount": 8
},
{
"country_id": 101,
"country": "United Arab Emirates",
"last_update": "1139958840000",
"CityCount": 3
}
]
}
}
List + limit
{
CountryList(limit:6) {
country
}
}
{
"data": {
"CountryList": [
{
"country": "Afghanistan"
},
{
"country": "Algeria"
},
{
"country": "American Samoa"
},
{
"country": "Angola"
},
{
"country": "Anguilla"
},
{
"country": "Argentina"
}
]
}
}
TableNameRead
CountryRead(id:"1") {
country_id
country
last_update
}
"data": {
"CountryRead": {
"country_id": 1,
"country": "Afghanistan",
"last_update": "1139978640000",
"CityCount": 1
}
}
TableNameExists
CountryExists(id:"1")
"data": {
"CountryExists": true
}
TableNameFindOne
CountryFindOne(where:"(country_id,eq,1)") {
country_id
country
last_update
CityCount
}
"data": {
"CountryFindOne": {
"country_id": 1,
"country": "Afghanistan",
"last_update": "1139978640000",
"CityCount": 1
}
}
TableNameCount
CountryCount
{
"data": {
"CountryCount": 109
}
}
TableNameDistinct
{
CountryDistinct(columnName:"last_update",limit:3) {
last_update
}
}
{
"data": {
"CountryDistinct": [
{
"last_update": "1139958840000"
},
{
"last_update": "1578323893000"
},
{
"last_update": "1578321201000"
}
]
}
}
TableNameGroupBy
{
CountryGroupBy(fields:"last_update",limit:1) {
country_id
country
last_update
count
}
}
{
"data": {
"CountryGroupBy": [
{
"country_id": null,
"country": null,
"last_update": "1139958840000",
"count": 109
}
]
}
}
TableNameAggregate
{
PaymentAggregate(columnName:"amount",func:"min,max,avg,count") {
count
avg
min
}
}
{
"data": {
"PaymentAggregate": [
{
"count": 16048,
"avg": 4.200743,
"min": 0
}
]
}
}
TableNameDistribution
{
PaymentDistribution (columnName:"amount"){
range
count
}
}
{
"data": {
"PaymentDistribution": [
{
"range": "0-4",
"count": 8302
},
{
"range": "5-8",
"count": 3100
},
{
"range": "9-11.99",
"count": 371
}
]
}
}
TableNameCreate
mutation {
CountryCreate(data: {country: "test"}) {
country_id
country
last_update
CityCount
}
}
{
"data": {
"CountryCreate": {
"country_id": 10264,
"country": "test",
"last_update": null,
"CityCount": 0
}
}
}
TableNameUpdate
mutation {
CountryUpdate(data: {country: "test_new"}, id: "10264") {
country_id
country
last_update
CityCount
}
}
{
"data": {
"CountryUpdate": {
"country_id": null,
"country": null,
"last_update": null,
"CityCount": null
}
}
}
TableNameDelete
mutation {
CountryDelete(id: "10264") {
country_id
country
last_update
CityCount
}
}
{
"data": {
"CountryDelete": {
"country_id": null,
"country": null,
"last_update": null,
"CityCount": null
}
}
}
TableNameCreateBulk
mutation {
CountryCreateBulk(data:[{country:"test 2"},{country:"test 3"}])
}
{
"data": {
"CountryCreateBulk": [
10265
]
}
}
TableNameUpdateBulk
mutation {
CountryUpdateBulk(data: [{country: "test 2", country_id: 10265}, {country: "test 3", country_id: 10266}])
}
{
"data": {
"CountryUpdateBulk": [
1,
1
]
}
}
TableNameDeleteBulk
mutation {
CountryDeleteBulk(data: [{country_id: 10265}, {country_id: 10266}])
}
{
"data": {
"CountryDeleteBulk": [
1,
1
]
}
}