@lionrockjs/central
Version:
Node.js MVC framework inspire from PHP Kohana Framework
78 lines (62 loc) • 1.93 kB
JavaScript
/**
* Copyright (c) 2023 Kojin Nakana
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import Central from '../Central.mjs';
class DatabaseStatement {
// eslint-disable-next-line no-useless-constructor,no-empty-function
constructor(sql) {/***/}
// eslint-disable-next-line class-methods-use-this
async run(arg) {/***/}
// eslint-disable-next-line class-methods-use-this
async get(arg) { return {}; }
// eslint-disable-next-line class-methods-use-this
async all(arg) { return []; }
}
export default class DatabaseAdapter {
/**
*
* @param {string} datasource
*/
// eslint-disable-next-line no-useless-constructor,no-empty-function
constructor(datasource) {/***/}
// eslint-disable-next-line class-methods-use-this
prepare(sql) { return new DatabaseStatement(sql); }
// eslint-disable-next-line class-methods-use-this
async transaction(fn) {
await this.transactionStart();
try{
await fn();
}catch(e){
await this.transactionRollback();
throw e;
}
await this.transactionCommit();
}
// eslint-disable-next-line class-methods-use-this
async exec(sql) {
Central.log('Database exec using Abstract DatabaseAdapter', false);
Central.log(sql, false);
}
// eslint-disable-next-line class-methods-use-this
async close() {/***/}
// eslint-disable-next-line class-methods-use-this
async transactionStart(){/***/}
// eslint-disable-next-line class-methods-use-this
async transactionRollback(){/***/}
// eslint-disable-next-line class-methods-use-this
async transactionCommit(){/***/}
// eslint-disable-next-line class-methods-use-this
async checkpoint(){/***/}
/**
*
* @param {string} datasource
* @returns {function | Object | Database}
*/
static create(datasource) {
return new DatabaseAdapter(datasource);
}
}