zing-orm
Version:
75 lines • 6.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OracleDriver = void 0;
const chalk = require("chalk");
class OracleDriver {
constructor() {
this.type = "oracle";
this.dirver = require('oracledb');
// Using a fixed Oracle time zone helps avoid machine and deployment differences
process.env.ORA_SDTZ = 'UTC';
// On Windows and macOS, you can specify the directory containing the Oracle
// Client Libraries at runtime, or before Node.js starts. On other platforms
// the system library search path must always be set before Node.js is started.
// See the node-oracledb installation documentation.
// If the search path is not correct, you will get a DPI-1047 error.
if (process.platform === 'win32') { // Windows
if (process.env.PATH.indexOf('oracle') === -1 &&
process.env.PATH.indexOf('Oracle') === -1 &&
process.env.PATH.indexOf('ORACLE') === -1 &&
process.env.PATH.indexOf('instantclient') === -1 &&
process.env.PATH.indexOf('Instantclient') === -1 &&
process.env.PATH.indexOf('INSTANTCLIENT') === -1) {
let path = '';
if (process.env.PATH.charAt(process.env.PATH.length - 1) !== ';') {
path += ';';
}
path += 'C:\\oracle\\instantclient_19_11;';
process.env.PATH = process.env.PATH + path;
}
// this.dirver.initOracleClient({ libDir: 'C:\\oracle\\instantclient_19_11' });
console.log(chalk.blueBright('[zing-orm]'), chalk.yellow('use default PATH C:\\oracle\\instantclient_19_11, you should check and install Visual Studio Redistributables.'));
}
else if (process.platform === 'darwin') { // macOS
if (!process.env.LD_LIBRARY_PATH) {
process.env.LD_LIBRARY_PATH = '/Downloads/instantclient_19_8';
console.log(chalk.blueBright('[zing-orm]'), chalk.yellow('use default LD_LIBRARY_PATH /Downloads/instantclient_19_8'));
}
// this.dirver.initOracleClient({ libDir: process.env.HOME + '/Downloads/instantclient_19_8' });
}
}
async getConnection(_options) {
// Fetch each row as an object
this.dirver.outFormat = this.dirver.OUT_FORMAT_OBJECT;
//todo options joi check
let connection;
try {
connection = await this.dirver.getConnection({
user: _options.user,
password: _options.password,
connectString: `${_options.host}:${_options.port}/${_options.database}`,
});
}
catch (err) {
console.error("获取 oracle connection 失败!!!", err);
throw Error(`获取 oracle connection 失败!!!, 错误: ${err}`);
}
if (!!connection)
console.log("获取 oracle connection 成功.");
return connection;
}
async closeConnection(_connection) {
try {
if (!!_connection) {
await _connection.close();
console.log("关闭 oracle connection 成功.");
}
}
catch (err) {
console.error(err);
throw Error(`关闭 oracle connection 失败!!!, 错误: ${err}`);
}
}
}
exports.OracleDriver = OracleDriver;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JhY2xlRHJpdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiT3JhY2xlRHJpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLCtCQUErQjtBQUUvQixNQUFhLFlBQVk7SUFPckI7UUFMUyxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBRWhCLFdBQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFJbEMsZ0ZBQWdGO1FBQ2hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUM3Qiw0RUFBNEU7UUFDNUUsNkVBQTZFO1FBQzdFLCtFQUErRTtRQUMvRSxvREFBb0Q7UUFDcEQsb0VBQW9FO1FBRXBFLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsRUFBRSxVQUFVO1lBQzFDLElBQ0ksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNsRDtnQkFFRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxN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