sap-hdb-promisfied
Version:
Promise wrapper for hdb without any dependency to @sap/hana-client
126 lines (115 loc) • 4.33 kB
JavaScript
const dbClass = require('./index.cjs')
const xsenv = require("@sap/xsenv")
/**
* Test #1
*/
async function test1() {
let envFile = dbClass.resolveEnv(null)
dbClass.createConnectionFromEnv(envFile)
.then((/** @type {any} */ client) => {
let db = new dbClass(client)
db.preparePromisified(`SELECT SESSION_USER, CURRENT_SCHEMA
FROM "DUMMY"`)
.then((/** @type {any} */ statement) => {
db.statementExecPromisified(statement, [])
.then(/** @type {any} */ (/** @type {any} */ results) => {
console.table(results)
db.destroyClient()
})
.catch(/** @type {any} */ (/** @type {{ toString: () => any; }} */ err) => {
console.error(`ERROR: ${err.toString()}`)
})
})
.catch((/** @type {{ toString: () => any; }} */ err) => {
console.error(`ERROR: ${err.toString()}`)
})
})
.catch((/** @type {{ toString: () => any; }} */ err) => {
console.error(`ERROR: ${err.toString()}`)
})
}
//test1()
/**
* Test #2
*/
async function test2() {
try {
let db = new dbClass(await dbClass.createConnectionFromEnv(dbClass.resolveEnv(null)))
const statement = await db.preparePromisified(`SELECT SESSION_USER, CURRENT_SCHEMA
FROM "DUMMY"`)
const results = await db.statementExecPromisified(statement, [])
console.table(results)
db.destroyClient()
} catch (/** @type {any} */ err) {
console.error(`ERROR: ${err.toString()}`)
}
}
//test2()
/**
* Test #2.1 Current Schema
*/
async function test2_1() {
try {
let db = new dbClass(await dbClass.createConnectionFromEnv(dbClass.resolveEnv(null)))
let schema = await db.schemaCalc({schema: '**CURRENT_SCHEMA**'}, db)
console.log(`Current Schema: ${schema}`)
db.destroyClient()
} catch (/** @type {any} */ err) {
console.error(`ERROR: ${err.toString()}`)
}
}
//test2_1()
/**
* Test #2.2
*/
async function test2_2() {
try {
let db = new dbClass(await dbClass.createConnectionFromEnv(dbClass.resolveEnv(null)))
const statement = await db.preparePromisified(`select top 50 SCHEMA_NAME, TABLE_NAME from TABLES WHERE SCHEMA_NAME = ?`)
const results = await db.statementExecPromisified(statement, ['SYS'])
console.table(results)
db.destroyClient()
} catch (/** @type {any} */ err) {
console.error(`ERROR: ${err.toString()}`)
}
}
//test2_2()
/**
* Test #3
*/
async function test3() {
try {
let db = new dbClass(await dbClass.createConnectionFromEnv(dbClass.resolveEnv(null)))
let sp = await db.loadProcedurePromisified('SYS', 'IS_VALID_PASSWORD')
let output = await db.callProcedurePromisified(sp, {PASSWORD: "TEST"})
console.table(output)
db.destroyClient()
} catch (/** @type {any} */ err) {
console.error(`ERROR: ${err.toString()}`)
}
}
//test3()
async function testUps() {
try {
xsenv.loadEnv()
let userProvidedHanaEnv = xsenv.serviceCredentials({ label: 'user-provided' })
//console.log("credentials for user provided")
//console.log(userProvidedHanaEnv)
let connectionDetails = { hana: userProvidedHanaEnv }
//console.log(connectionDetails.hana)
//let db = new dbClass(await dbClass.createConnection(dbClass.resolveEnv()));
const db = new dbClass(await dbClass.createConnection(connectionDetails))
const statement = await db.preparePromisified(`SELECT SESSION_USER, CURRENT_SCHEMA
FROM "DUMMY"`)
const results = await db.statementExecPromisified(statement, [])
console.table(results)
db.destroyClient()
} catch (/** @type {any} */ err) {
console.error(`ERROR: ${err.toString()}`)
}
}
test1()
test2_1()
test2_2()
test3()
testUps()