Skip to content

Commit 9d3ab32

Browse files
committed
fix: add support for database server id generation
1 parent 2075a74 commit 9d3ab32

File tree

5 files changed

+14
-10
lines changed

5 files changed

+14
-10
lines changed

adminforth/dataConnectors/baseConnector.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,12 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon
187187
}
188188

189189
process.env.HEAVY_DEBUG && console.log('🪲🆕 creating record',JSON.stringify(recordWithOriginalValues));
190-
const pkValue = await this.createRecordOriginalValues({ resource, record: recordWithOriginalValues });
190+
let pkValue = await this.createRecordOriginalValues({ resource, record: recordWithOriginalValues });
191+
if (recordWithOriginalValues[this.getPrimaryKey(resource)] !== undefined) {
192+
// some data sources always return some value for pk, even if it is was not auto generated
193+
// this check prevents wrong value from being used later in get request
194+
pkValue = recordWithOriginalValues[this.getPrimaryKey(resource)];
195+
}
191196

192197
let createdRecord = recordWithOriginalValues;
193198
if (pkValue) {

adminforth/dataConnectors/clickhouse.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,13 +341,13 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth
341341
async createRecordOriginalValues({ resource, record }: { resource: AdminForthResource, record: any }): Promise<string> {
342342
const tableName = resource.table;
343343
const columns = Object.keys(record);
344-
await this.client.insert({
344+
const ret = await this.client.insert({
345345
database: this.dbName,
346346
table: tableName,
347347
columns: columns,
348348
values: [Object.values(record)],
349349
});
350-
return ''; // todo
350+
return ret.query_id;
351351
}
352352

353353
async updateRecordOriginalValues({ resource, recordId, newValues }: { resource: AdminForthResource, recordId: any, newValues: any }) {

adminforth/dataConnectors/mongo.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,8 @@ class MongoConnector extends AdminForthBaseConnector implements IAdminForthDataS
186186
for (const colName of columns) {
187187
newRecord[colName] = record[colName];
188188
}
189-
await collection.insertOne(newRecord);
190-
return ''; // todo
189+
const ret = await collection.insertOne(newRecord);
190+
return ret.insertedId;
191191
}
192192

193193
async updateRecordOriginalValues({ resource, recordId, newValues }) {

adminforth/dataConnectors/mysql.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,8 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS
287287
if (process.env.HEAVY_DEBUG_QUERY) {
288288
console.log('🪲📜 MySQL Q:', q, 'values:', values);
289289
}
290-
await this.client.execute(q, values);
291-
292-
return ''; // todo
290+
const ret = await this.client.execute(q, values);
291+
return ret.insertId;
293292
}
294293

295294
async updateRecordOriginalValues({ resource, recordId, newValues }) {

adminforth/dataConnectors/sqlite.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,8 @@ class SQLiteConnector extends AdminForthBaseConnector implements IAdminForthData
269269
const placeholders = columns.map(() => '?').join(', ');
270270
const values = columns.map((colName) => record[colName]);
271271
const q = this.client.prepare(`INSERT INTO ${tableName} (${columns.join(', ')}) VALUES (${placeholders})`);
272-
await q.run(values);
273-
return ''; // todo q.lastInsertRowid;
272+
const ret = await q.run(values);
273+
return ret.lastInsertRowid;
274274
}
275275

276276
async updateRecordOriginalValues({ resource, recordId, newValues }: { resource: AdminForthResource, recordId: any, newValues: any }) {

0 commit comments

Comments
 (0)