Skip to content

Commit e55df9c

Browse files
author
Pavlo Kulyk
committed
fix: resolve copilot comment
1 parent d8ece07 commit e55df9c

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

adminforth/dataConnectors/clickhouse.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -500,9 +500,17 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
500500
}
501501

502502
async deleteMany({ resource, recordIds }: { resource: AdminForthResource; recordIds: any[] }): Promise<number> {
503-
const idsList = recordIds.map(id => `'${id}'`).join(', ');
504-
const query = `ALTER TABLE ${resource.table} DELETE WHERE ${this.getPrimaryKey(resource)} IN (${idsList})`;
505-
const res = await this.client.query({ query });
503+
const pkColumn = resource.dataSourceColumns.find((col) => col.primaryKey);
504+
if (!pkColumn || !recordIds || recordIds.length === 0) {
505+
return 0;
506+
}
507+
const paramNames = recordIds.map((_, idx) => `id${idx}`);
508+
const conditions = paramNames.map((name) => `${pkColumn.name} = {${name}:${pkColumn._underlineType}}`).join(' OR ');
509+
const queryParams = paramNames.reduce((acc, name, idx) => {acc[name] = recordIds[idx]; return acc;}, {} as Record<string, any>);
510+
await this.client.command({
511+
query: `ALTER TABLE ${this.dbName}.${resource.table} DELETE WHERE ${conditions}`,
512+
query_params: queryParams,
513+
});
506514
return recordIds.length ?? 0;
507515
}
508516

adminforth/dataConnectors/postgres.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ class PostgresConnector extends AdminForthBaseConnector implements IAdminForthDa
457457

458458
async deleteMany({ resource, recordIds }: { resource: AdminForthResource; recordIds: any[] }): Promise<number> {
459459
const placeholders = recordIds.map((_, idx) => `$${idx + 1}`).join(', ');
460-
const query = `DELETE FROM ${resource.table} WHERE ${this.getPrimaryKey(resource)} IN (${placeholders})`;
460+
const query = `DELETE FROM "${resource.table}" WHERE "${this.getPrimaryKey(resource)}" IN (${placeholders})`;
461461
const res = await this.client.query(query, recordIds);
462462
return res.rowCount ?? 0;
463463
}

adminforth/types/Back.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,6 @@ export interface IAdminForthDataSourceConnectorBase extends IAdminForthDataSourc
292292
}): Promise<{ok: boolean, error?: string}>;
293293

294294
getMinMaxForColumns({ resource, columns }: { resource: AdminForthResource, columns: AdminForthResourceColumn[] }): Promise<{ [key: string]: { min: any, max: any } }>;
295-
296-
deleteMany?(params: { resource: AdminForthResource; recordIds: any[] }): Promise<number>;
297295
}
298296

299297

@@ -1763,7 +1761,7 @@ export interface IOperationalResource {
17631761

17641762
delete: (primaryKey: any) => Promise<boolean>;
17651763

1766-
deleteMany?(params: { resource: AdminForthResource; recordIds: any[] }): Promise<number>;
1764+
deleteMany?(recordIds: any[]): Promise<number>;
17671765

17681766
dataConnector: IAdminForthDataSourceConnectorBase;
17691767
}

0 commit comments

Comments
 (0)