mirror of
https://github.com/nocodb/nocodb.git
synced 2026-04-25 04:45:07 +00:00
@@ -54,6 +54,7 @@ Currently, the default value for {orgs} is <b>noco</b>. Users will be able to ch
|
||||
| Data | Delete| dbTableRow | bulkDeleteAll | /api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/all |
|
||||
| Data | Get | dbTableRow | list | /api/v1/db/data/{orgs}/{projectName}/{tableName} |
|
||||
| Data | Get | dbTableRow | findOne | /api/v1/db/data/{orgs}/{projectName}/{tableName}/find-one |
|
||||
| Data | Get | dbTableRow | exist | /api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}/exist |
|
||||
| Data | Post | dbTableRow | create | /api/v1/db/data/{orgs}/{projectName}/{tableName} |
|
||||
| Data | Get | dbTableRow | read | /api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId} |
|
||||
| Data | Patch | dbTableRow | update | /api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId} |
|
||||
@@ -61,6 +62,7 @@ Currently, the default value for {orgs} is <b>noco</b>. Users will be able to ch
|
||||
| Data | Get | dbTableRow | count | /api/v1/db/data/{orgs}/{projectName}/{tableName}/count |
|
||||
| Data | Get | dbViewRow | list | /api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName} |
|
||||
| Data | Get | dbViewRow | findOne | /api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/find-one |
|
||||
| Data | Get | dbViewRow | exist | /api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}/exist |
|
||||
| Data | Post | dbViewRow | create | /api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName} |
|
||||
| Data | Get | dbViewRow | read | /api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId} |
|
||||
| Data | Patch | dbViewRow | update | /api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId} |
|
||||
|
||||
@@ -2258,30 +2258,6 @@ export class Api<
|
||||
...params,
|
||||
}),
|
||||
|
||||
/**
|
||||
* No description
|
||||
*
|
||||
* @tags DB table row
|
||||
* @name Count
|
||||
* @summary table rows count
|
||||
* @request GET:/api/v1/db/data/{orgs}/{projectName}/{tableName}/count
|
||||
* @response `200` `any` OK
|
||||
*/
|
||||
count: (
|
||||
orgs: string,
|
||||
projectName: string,
|
||||
tableName: string,
|
||||
query?: { where?: string; nested?: any },
|
||||
params: RequestParams = {}
|
||||
) =>
|
||||
this.request<any, any>({
|
||||
path: `/api/v1/db/data/${orgs}/${projectName}/${tableName}/count`,
|
||||
method: 'GET',
|
||||
query: query,
|
||||
format: 'json',
|
||||
...params,
|
||||
}),
|
||||
|
||||
/**
|
||||
* No description
|
||||
*
|
||||
@@ -2353,6 +2329,29 @@ export class Api<
|
||||
...params,
|
||||
}),
|
||||
|
||||
/**
|
||||
* @description check row with provided primary key exists or not
|
||||
*
|
||||
* @tags DB table row
|
||||
* @name Exist
|
||||
* @summary Table row exist
|
||||
* @request GET:/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}/exist
|
||||
* @response `201` `any` Created
|
||||
*/
|
||||
exist: (
|
||||
orgs: string,
|
||||
projectName: string,
|
||||
tableName: string,
|
||||
rowId: string,
|
||||
params: RequestParams = {}
|
||||
) =>
|
||||
this.request<any, any>({
|
||||
path: `/api/v1/db/data/${orgs}/${projectName}/${tableName}/${rowId}/exist`,
|
||||
method: 'GET',
|
||||
format: 'json',
|
||||
...params,
|
||||
}),
|
||||
|
||||
/**
|
||||
* No description
|
||||
*
|
||||
@@ -2785,6 +2784,30 @@ export class Api<
|
||||
...params,
|
||||
}),
|
||||
|
||||
/**
|
||||
* @description check row with provided primary key exists or not
|
||||
*
|
||||
* @tags DB view row
|
||||
* @name Exist
|
||||
* @summary Table view row exist
|
||||
* @request GET:/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}/exist
|
||||
* @response `201` `any` Created
|
||||
*/
|
||||
exist: (
|
||||
orgs: string,
|
||||
projectName: string,
|
||||
tableName: string,
|
||||
viewName: string,
|
||||
rowId: string,
|
||||
params: RequestParams = {}
|
||||
) =>
|
||||
this.request<any, any>({
|
||||
path: `/api/v1/db/data/${orgs}/${projectName}/${tableName}/views/${viewName}/${rowId}/exist`,
|
||||
method: 'GET',
|
||||
format: 'json',
|
||||
...params,
|
||||
}),
|
||||
|
||||
/**
|
||||
* @description CSV or Excel export
|
||||
*
|
||||
|
||||
@@ -102,6 +102,16 @@ class BaseModelSqlv2 {
|
||||
return data;
|
||||
}
|
||||
|
||||
public async exist(id?: any): Promise<any> {
|
||||
const qb = this.dbDriver(this.model.table_name);
|
||||
await this.selectObject({ qb });
|
||||
const pks = this.model.primaryKeys;
|
||||
if ((id + '').split('___').length != pks.length) {
|
||||
return false;
|
||||
}
|
||||
return !!(await qb.where(_wherePk(pks, id)).first());
|
||||
}
|
||||
|
||||
public async findOne(
|
||||
args: {
|
||||
where?: string;
|
||||
|
||||
@@ -159,6 +159,19 @@ async function dataRead(req: Request, res: Response) {
|
||||
);
|
||||
}
|
||||
|
||||
async function dataExist(req: Request, res: Response) {
|
||||
const { model, view } = await getViewAndModelFromRequestByAliasOrId(req);
|
||||
|
||||
const base = await Base.get(model.base_id);
|
||||
|
||||
const baseModel = await Model.getBaseModelSQL({
|
||||
id: model.id,
|
||||
viewId: view?.id,
|
||||
dbDriver: NcConnectionMgrv2.get(base)
|
||||
});
|
||||
|
||||
res.json(await baseModel.exist(req.params.rowId));
|
||||
}
|
||||
const router = Router({ mergeParams: true });
|
||||
|
||||
// table data crud apis
|
||||
@@ -174,11 +187,18 @@ router.get(
|
||||
ncMetaAclMw(dataFindOne, 'dataFindOne')
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/:rowId/exist',
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataExist, 'dataExist')
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/count',
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataCount, 'dataCount')
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/views/:viewName/count',
|
||||
apiMetrics,
|
||||
@@ -190,11 +210,13 @@ router.get(
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataRead, 'dataRead')
|
||||
);
|
||||
|
||||
router.patch(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/:rowId',
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataUpdate, 'dataUpdate')
|
||||
);
|
||||
|
||||
router.delete(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/:rowId',
|
||||
apiMetrics,
|
||||
@@ -220,26 +242,36 @@ router.get(
|
||||
ncMetaAclMw(dataFindOne, 'dataFindOne')
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/views/:viewName/:rowId/exist',
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataExist, 'dataExist')
|
||||
);
|
||||
|
||||
router.post(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName',
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataInsert, 'dataInsert')
|
||||
);
|
||||
|
||||
router.post(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/views/:viewName',
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataInsert, 'dataInsert')
|
||||
);
|
||||
|
||||
router.patch(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/views/:viewName/:rowId',
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataUpdate, 'dataUpdate')
|
||||
);
|
||||
|
||||
router.get(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/views/:viewName/:rowId',
|
||||
apiMetrics,
|
||||
ncMetaAclMw(dataRead, 'dataRead')
|
||||
);
|
||||
|
||||
router.delete(
|
||||
'/api/v1/db/data/:orgs/:projectName/:tableName/views/:viewName/:rowId',
|
||||
apiMetrics,
|
||||
|
||||
@@ -21,6 +21,8 @@ export default {
|
||||
dataDelete: true,
|
||||
dataInsert: true,
|
||||
dataRead: true,
|
||||
dataExist: true,
|
||||
dataFindOne: true,
|
||||
commentsCount: true,
|
||||
exportCsv: true,
|
||||
|
||||
@@ -153,6 +155,8 @@ export default {
|
||||
// data
|
||||
dataList: true,
|
||||
dataRead: true,
|
||||
dataExist: true,
|
||||
dataFindOne: true,
|
||||
commentsCount: true,
|
||||
|
||||
xcTableAndViewList: true,
|
||||
@@ -188,6 +192,8 @@ export default {
|
||||
// data
|
||||
dataList: true,
|
||||
dataRead: true,
|
||||
dataExist: true,
|
||||
dataFindOne: true,
|
||||
commentsCount: true,
|
||||
exportCsv: true,
|
||||
|
||||
|
||||
@@ -2600,67 +2600,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/db/data/{orgs}/{projectName}/{tableName}/count": {
|
||||
"parameters": [
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "orgs",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "projectName",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "tableName",
|
||||
"in": "path",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"get": {
|
||||
"summary": "table rows count",
|
||||
"operationId": "db-table-row-count",
|
||||
"description": "",
|
||||
"tags": [
|
||||
"DB table row"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"in": "query",
|
||||
"name": "where"
|
||||
},
|
||||
{
|
||||
"schema": {},
|
||||
"in": "query",
|
||||
"name": "nested",
|
||||
"description": "Query params for nested data"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}": {
|
||||
"parameters": [
|
||||
{
|
||||
@@ -3019,6 +2958,68 @@
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}/exist": {
|
||||
"parameters": [
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "orgs",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "projectName",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "tableName",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "viewName",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "rowId",
|
||||
"in": "path",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"get": {
|
||||
"summary": "Table view row exist",
|
||||
"operationId": "db-view-row-exist",
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Created",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "check row with provided primary key exists or not",
|
||||
"tags": [
|
||||
"DB view row"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}": {
|
||||
"parameters": [
|
||||
{
|
||||
@@ -3110,6 +3111,60 @@
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}/exist": {
|
||||
"parameters": [
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "orgs",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "projectName",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "tableName",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": "rowId",
|
||||
"in": "path",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"get": {
|
||||
"summary": "Table row exist",
|
||||
"operationId": "db-table-row-exist",
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Created",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "check row with provided primary key exists or not",
|
||||
"tags": [
|
||||
"DB table row"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}": {
|
||||
"parameters": [
|
||||
{
|
||||
@@ -7958,4 +8013,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user