UNPKG

orange-orm

Version:

Object Relational Mapper

77 lines (68 loc) 1.98 kB
function map(index, _fn) { const handler = { get(target, prop) { if (prop === 'map') { return () => { return new Proxy(onFinal, handler); }; } else if (typeof target[prop] !== 'undefined') { return target[prop]; } else { return () => { return new Proxy({}, handler); }; } }, apply(target, _thisArg, argumentsList) { if (target === onFinal) { return target(...argumentsList); } else { return new Proxy({}, handler); } }, set(target, prop, value) { target[prop] = value; return true; }, }; function dbMap(fn) { return fn(dbMap); } dbMap.http = (url) => url; dbMap.pg = throwDb; dbMap.pglite = throwDb; dbMap.postgres = throwDb; dbMap.mssql = throwDb; dbMap.mssqlNative = throwDb; dbMap.mysql = throwDb; dbMap.sap = throwDb; dbMap.oracle = throwDb; dbMap.sqlite = throwDb; dbMap.d1 = throwDb; function throwDb() { throw new Error('Cannot create pool for database outside node'); } function onFinal(arg) { if (arg && arg.db && typeof arg.db === 'function') { return index({ ...arg, db: dbMap(arg.db), providers: dbMap }); } return index({ ...arg, providers: dbMap }); } onFinal.http = (url) => index({ db: url, providers: dbMap }); onFinal.pg = () => index({ db: throwDb, providers: dbMap }); onFinal.pglite = () => index({ db: throwDb, providers: dbMap }); onFinal.postgres = () => index({ db: throwDb, providers: dbMap }); onFinal.mssql = () => index({ db: throwDb, providers: dbMap }); onFinal.mssqlNative = () => index({ db: throwDb, providers: dbMap }); onFinal.mysql = () => index({ db: throwDb, providers: dbMap }); onFinal.sap = () => index({ db: throwDb, providers: dbMap }); onFinal.oracle = () => index({ db: throwDb, providers: dbMap }); onFinal.sqlite = () => index({ db: throwDb, providers: dbMap }); onFinal.d1 = () => index({ db: throwDb, providers: dbMap }); return new Proxy(onFinal, handler); } module.exports = map;