UNPKG

@adonisjs/lucid

Version:

SQL ORM built on top of Active Record pattern

46 lines (45 loc) 1.46 kB
/* * @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; } }