@codenameryuu/adonis-datatable
Version:
Package server side datatables on AdonisJS 6
32 lines (31 loc) • 1.06 kB
JavaScript
import { Exception } from '@adonisjs/core/exceptions';
import LucidDataTable from './engines/lucid_datatable.js';
import DatabaseDataTable from './engines/database_datatable.js';
import ObjectDataTable from './engines/object_datatable.js';
export class Datatables {
engines;
constructor(engines) {
this.engines = engines;
}
of(...source) {
for (const engine of Object.values(this.engines)) {
const canCreate = engine.canCreate;
if (typeof canCreate === 'function' && canCreate.apply(engine, source)) {
const create = engine.create;
if (typeof create === 'function') {
return create.apply(engine, source);
}
}
}
throw new Exception('No available engine run');
}
static lucid(source) {
return LucidDataTable.create(source);
}
static database(source) {
return DatabaseDataTable.create(source);
}
static object(source) {
return ObjectDataTable.create(source);
}
}