@adonisjs/lucid
Version:
SQL ORM built on top of Active Record pattern
46 lines (45 loc) • 1.46 kB
JavaScript
/*
* @adonisjs/lucid
*
* (c) Harminder Virk <virk@adonisjs.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
* Exposes the API to configure the on conflict clause for insert queries
*/
export class OnConflictQueryBuilder {
knexOnConflictBuilder;
insertQueryBuilder;
constructor(knexOnConflictBuilder, insertQueryBuilder) {
this.knexOnConflictBuilder = knexOnConflictBuilder;
this.insertQueryBuilder = insertQueryBuilder;
}
/**
* Ignore the conflicting row
*/
ignore() {
this.knexOnConflictBuilder.ignore();
return this.insertQueryBuilder;
}
/**
* Merge the conflicting row with the new values
*/
merge(columnsOrValues) {
if (columnsOrValues && !Array.isArray(columnsOrValues) && typeof columnsOrValues === 'object') {
const transformedValues = Object.keys(columnsOrValues).reduce((result, key) => {
result[key] = this.insertQueryBuilder['transformValue'](columnsOrValues[key]);
return result;
}, {});
this.knexOnConflictBuilder.merge(transformedValues);
}
else if (columnsOrValues) {
this.knexOnConflictBuilder.merge(columnsOrValues);
}
else {
this.knexOnConflictBuilder.merge();
}
return this.insertQueryBuilder;
}
}