import { EntityRawSchemaArray, Client, Transaction, RelationDefinitionRawSchemaArray, Schema, } from "@cubicweb/client"; import { DeleteManyParams, DeleteManyResult, DeleteParams, DeleteResult, RaRecord, } from "./types.js"; import { executeApiTransaction } from "./utils/requests.js"; import { generateDeleteEntitiesRQL } from "@cubicweb/rql-generator"; export const getDelete = < E extends EntityRawSchemaArray, R extends RelationDefinitionRawSchemaArray >( client: Client, schema: Schema ) => { const _delete = async ( resource: E[number]["type"], data: DeleteParams ): Promise> => { const transaction = new Transaction(); const queries = generateDeleteEntitiesRQL(schema, resource, { where: { eid: data.id }, }); transaction.push(...queries); return executeApiTransaction(client, transaction).then(() => { return { data: data.previousData as RaRecord }; }); }; const deleteMany = async ( resource: E[number]["type"], data: DeleteManyParams ): Promise => { const transaction = new Transaction(); const queries = generateDeleteEntitiesRQL(schema, resource, { where: { eid: data.ids }, }); transaction.push(...queries); return executeApiTransaction(client, transaction).then(() => { return { data: data.ids }; }); }; return { delete: _delete, deleteMany }; };