mirror of
				https://github.com/Fabio286/antares.git
				synced 2025-06-05 21:59:22 +02:00 
			
		
		
		
	perf(core): bulk inserts support
This commit is contained in:
		@@ -189,13 +189,13 @@ export default (connections) => {
 | 
			
		||||
            insertObj[key] = escapedParam;
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         for (let i = 0; i < params.repeat; i++) {
 | 
			
		||||
            await connections[params.uid]
 | 
			
		||||
               .schema(params.schema)
 | 
			
		||||
               .into(params.table)
 | 
			
		||||
               .insert(insertObj)
 | 
			
		||||
               .run();
 | 
			
		||||
         }
 | 
			
		||||
         const rows = new Array(+params.repeat).fill(insertObj);
 | 
			
		||||
 | 
			
		||||
         await connections[params.uid]
 | 
			
		||||
            .schema(params.schema)
 | 
			
		||||
            .into(params.table)
 | 
			
		||||
            .insert(rows)
 | 
			
		||||
            .run();
 | 
			
		||||
 | 
			
		||||
         return { status: 'success' };
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ export class AntaresCore {
 | 
			
		||||
         limit: [],
 | 
			
		||||
         join: [],
 | 
			
		||||
         update: [],
 | 
			
		||||
         insert: {},
 | 
			
		||||
         insert: [],
 | 
			
		||||
         delete: false
 | 
			
		||||
      };
 | 
			
		||||
      this._query = Object.assign({}, this._queryDefaults);
 | 
			
		||||
@@ -120,12 +120,12 @@ export class AntaresCore {
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   /**
 | 
			
		||||
    * @param {Object} obj field: value
 | 
			
		||||
    * @param {Array} arr Array of row objects
 | 
			
		||||
    * @returns
 | 
			
		||||
    * @memberof AntaresCore
 | 
			
		||||
    */
 | 
			
		||||
   insert (obj) {
 | 
			
		||||
      this._query.insert = { ...this._query.insert, ...obj };
 | 
			
		||||
   insert (arr) {
 | 
			
		||||
      this._query.insert = [...this._query.insert, ...arr];
 | 
			
		||||
      return this;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1157,18 +1157,11 @@ export class MySQLClient extends AntaresCore {
 | 
			
		||||
      // INSERT
 | 
			
		||||
      let insertRaw = '';
 | 
			
		||||
 | 
			
		||||
      if (Object.keys(this._query.insert).length) {
 | 
			
		||||
         const fieldsList = [];
 | 
			
		||||
         const valueList = [];
 | 
			
		||||
         const fields = this._query.insert;
 | 
			
		||||
      if (this._query.insert.length) {
 | 
			
		||||
         const fieldsList = Object.keys(this._query.insert[0]);
 | 
			
		||||
         const rowsList = this._query.insert.map(el => `(${Object.values(el).join(', ')})`);
 | 
			
		||||
 | 
			
		||||
         for (const key in fields) {
 | 
			
		||||
            if (fields[key] === null) continue;
 | 
			
		||||
            fieldsList.push(key);
 | 
			
		||||
            valueList.push(fields[key]);
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         insertRaw = `(${fieldsList.join(', ')}) VALUES (${valueList.join(', ')}) `;
 | 
			
		||||
         insertRaw = `(${fieldsList.join(', ')}) VALUES ${rowsList.join(', ')} `;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // GROUP BY
 | 
			
		||||
 
 | 
			
		||||
@@ -157,6 +157,8 @@ export default {
 | 
			
		||||
      nInserts (val) {
 | 
			
		||||
         if (!val || val < 1)
 | 
			
		||||
            this.nInserts = 1;
 | 
			
		||||
         if (!val || val > 1000)
 | 
			
		||||
            this.nInserts = 1000;
 | 
			
		||||
      }
 | 
			
		||||
   },
 | 
			
		||||
   created () {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user