diff --git a/dist/package-shared/functions/backend/db/deleteDbEntry.d.ts b/dist/package-shared/functions/backend/db/deleteDbEntry.d.ts index bc9f36b..d622ada 100644 --- a/dist/package-shared/functions/backend/db/deleteDbEntry.d.ts +++ b/dist/package-shared/functions/backend/db/deleteDbEntry.d.ts @@ -11,6 +11,7 @@ type Param({ dbContext, dbFullName, tableName, identifierColumnName, identifierValue, forceLocal, whereClauseObject, }: Param): Promise>; +} = any, K extends string = string>({ dbContext, dbFullName, tableName, identifierColumnName, identifierValue, forceLocal, whereClauseObject, targetIds, }: Param): Promise>; export {}; diff --git a/dist/package-shared/functions/backend/db/deleteDbEntry.js b/dist/package-shared/functions/backend/db/deleteDbEntry.js index 9747f48..efc10b8 100644 --- a/dist/package-shared/functions/backend/db/deleteDbEntry.js +++ b/dist/package-shared/functions/backend/db/deleteDbEntry.js @@ -21,7 +21,7 @@ const conn_db_handler_1 = __importDefault(require("../../../utils/db/conn-db-han * @description */ function deleteDbEntry(_a) { - return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, identifierColumnName, identifierValue, forceLocal, whereClauseObject, }) { + return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, identifierColumnName, identifierValue, forceLocal, whereClauseObject, targetIds, }) { try { const isMaster = forceLocal ? true @@ -33,7 +33,11 @@ function deleteDbEntry(_a) { */ let query = `DELETE FROM ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\``; let values = []; - if (whereClauseObject) { + if (targetIds) { + query += ` WHERE id IN (${targetIds.map((id) => "?").join(",")})`; + values = targetIds; + } + else if (whereClauseObject) { query += ` ${whereClauseObject.clause}`; values.push(...(whereClauseObject.params || [])); } diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index e0b0a67..1302428 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -1326,6 +1326,7 @@ export type DsqlCrudParam; @@ -2276,7 +2277,7 @@ export type APIPathsQuery = { searchQuery?: DsqlCrudQueryObject; - crudParams?: Pick, "count" | "countOnly" | "targetId" | "targetField" | "targetValue" | "tableSchema" | "onDuplicate">; + crudParams?: Pick, "count" | "countOnly" | "targetId" | "targetIds" | "targetField" | "targetValue" | "tableSchema" | "onDuplicate">; }; export type APIPathsParamsGetMiddleware = { identifierValue?: string | number; forceLocal?: boolean; whereClauseObject?: DsqlCrudParamWhereClause; + targetIds?: (string | number)[]; }; /** @@ -35,6 +36,7 @@ export default async function deleteDbEntry< identifierValue, forceLocal, whereClauseObject, + targetIds, }: Param): Promise> { try { const isMaster = forceLocal @@ -52,7 +54,10 @@ export default async function deleteDbEntry< let values: any[] = []; - if (whereClauseObject) { + if (targetIds) { + query += ` WHERE id IN (${targetIds.map((id) => "?").join(",")})`; + values = targetIds; + } else if (whereClauseObject) { query += ` ${whereClauseObject.clause}`; values.push(...(whereClauseObject.params || [])); } else if (identifierColumnName && identifierValue) { diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index 15bba2f..9bf1196 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -1559,6 +1559,7 @@ export type DsqlCrudParam< deleteKeyValues?: SQLDeleteData[]; deleteKeyValuesOperator?: "AND" | "OR"; targetId?: string | number; + targetIds?: (string | number)[]; targetValue?: string | number; targetField?: keyof T; query?: DsqlCrudQueryObject; @@ -2945,6 +2946,7 @@ export type APIPathsQuery< | "count" | "countOnly" | "targetId" + | "targetIds" | "targetField" | "targetValue" | "tableSchema" diff --git a/package-shared/utils/data-fetching/crud.ts b/package-shared/utils/data-fetching/crud.ts index d3ca239..fd6da3b 100644 --- a/package-shared/utils/data-fetching/crud.ts +++ b/package-shared/utils/data-fetching/crud.ts @@ -24,6 +24,7 @@ export default async function dsqlCrud< sanitize, targetField, targetId, + targetIds, dbFullName, deleteData, batchData, @@ -100,7 +101,15 @@ export default async function dsqlCrud< case "delete": let res: PostInsertReturn; - if (whereClauseObject) { + if (targetIds) { + const DELETE_RES = await deleteDbEntry({ + tableName: table, + dbFullName, + targetIds, + }); + + return DELETE_RES; + } else if (whereClauseObject) { const DELETE_RES = await deleteDbEntry({ whereClauseObject, tableName: table, diff --git a/package.json b/package.json index 0a70d67..420daf9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "5.7.17", + "version": "5.7.18", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {