( data: BulkDeleteByIdsData, requestId: string )
| 1713 | * @returns Deletion result with deleted/missing row IDs |
| 1714 | */ |
| 1715 | export async function deleteRowsByIds( |
| 1716 | data: BulkDeleteByIdsData, |
| 1717 | requestId: string |
| 1718 | ): Promise<BulkDeleteByIdsResult> { |
| 1719 | const uniqueRequestedRowIds = Array.from(new Set(data.rowIds)) |
| 1720 | |
| 1721 | const deletedRows = await deleteOrderedRowsByIds({ |
| 1722 | tableId: data.tableId, |
| 1723 | workspaceId: data.workspaceId, |
| 1724 | rowIds: uniqueRequestedRowIds, |
| 1725 | }) |
| 1726 | |
| 1727 | const deletedIds = deletedRows.map((r) => r.id) |
| 1728 | const deletedIdSet = new Set(deletedIds) |
| 1729 | const missingRowIds = uniqueRequestedRowIds.filter((id) => !deletedIdSet.has(id)) |
| 1730 | |
| 1731 | logger.info(`[${requestId}] Deleted ${deletedIds.length} rows by ID from table ${data.tableId}`) |
| 1732 | |
| 1733 | return { |
| 1734 | deletedCount: deletedIds.length, |
| 1735 | deletedRowIds: deletedIds, |
| 1736 | requestedCount: uniqueRequestedRowIds.length, |
| 1737 | missingRowIds, |
| 1738 | } |
| 1739 | } |
no test coverage detected