Skip to content

Commit

Permalink
feat: add bulk insert transaction
Browse files Browse the repository at this point in the history
  • Loading branch information
ismetkizgin committed Feb 27, 2022
1 parent 79ac358 commit 1bd8937
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/databaseTransactions/FadabHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { insertAsync } from './insertTransaction';
import { updateAsync } from './updateTransaction';
import { deleteAsync } from './deleteTransaction';
import { countAsync } from './countTransactions';
import { bulkInsertAsync } from './bulkInsertTransaction';
import {
SelectOptions,
Where,
Expand Down Expand Up @@ -45,4 +46,8 @@ export class FadabHelper {
countAsync(options?: CountOptions) {
return countAsync(this.baseTable, options);
}

bulkInsertAsync(values: Array<DynamicObject>, ignore?: boolean) {
return bulkInsertAsync(this.baseTable, values, ignore);
}
}
26 changes: 26 additions & 0 deletions src/databaseTransactions/bulkInsertTransaction.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { DynamicObject } from '../models';
import { queryAsync } from './queryTransaction';
import { escapeId } from './escapeTransaction';

export const bulkInsertAsync = (
tableName: string,
values: Array<DynamicObject>,
ignore?: boolean
) => {
if (!values || values.length == 0)
throw new Error('The values parameter cannot be sent blank.');

const fields: Array<string> = Object.keys(values[0]);
let valueArray: Array<any>;
const mapValuesArray = values.map(value => {
valueArray = [];
for (const field of fields) valueArray.push(value[field]);
return valueArray;
});
return queryAsync(
`INSERT ${ignore ? ' IGNORE' : ''} INTO ${escapeId(
tableName
)} (${fields.toString()}) VALUES ?`,
[mapValuesArray]
);
};
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ export * from './databaseTransactions/formatTransaction';
export * from './databaseTransactions/FadabHelper';
export * from './utils';
export * from './databaseTransactions/countTransactions';
export * from './databaseTransactions/bulkInsertTransaction';

0 comments on commit 1bd8937

Please sign in to comment.