@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
50 lines • 1.49 kB
JavaScript
/**
* @module Utilities
*/
import { OperationNodeTransformer } from "kysely";
/**
* @internal
*/
class TableNameTransformer extends OperationNodeTransformer {
tableNameMap;
constructor(tableNameMap) {
super();
this.tableNameMap = tableNameMap;
}
transformTable(node) {
const transformedNode = super.transformTable(node);
return {
...transformedNode,
table: {
...transformedNode.table,
identifier: {
...transformedNode.table.identifier,
name: (() => {
const sqlTableName = transformedNode.table.identifier.name;
const mapedTableName = this.tableNameMap[sqlTableName];
if (mapedTableName === undefined) {
throw new Error(`Table does not exist "${sqlTableName}"`);
}
return mapedTableName;
})(),
},
},
};
}
}
/**
* @internal
*/
export class KyselyTableNameTransformerPlugin {
transformer;
constructor(tableNameMap) {
this.transformer = new TableNameTransformer(tableNameMap);
}
transformQuery(args) {
return this.transformer.transformNode(args.node);
}
transformResult(args) {
return Promise.resolve(args.result);
}
}
//# sourceMappingURL=kysely-table-name-transformer-plugin.js.map