{"id":43517,"library":"oracle-sql-lib-engine","title":"Oracle SQL Lib Engine","description":"A Node.js library (v0.0.33) that manages Oracle SQL/PLSQL files as modules and services, built on node-oracledb. It provides a centralized way to configure, execute, and monitor SQL queries via HTTP endpoints, with support for connection pooling, parameter binding, concurrency limiting, and hot deployment. Designed for teams that want to decouple SQL logic from application code and enable frontend developers to write backend database queries directly. The package is in early development (pre-1.0), with a focus on ease of debugging and zero-downtime updates. Releases are frequent but breaking changes may occur.","status":"active","version":"0.0.33","language":"javascript","source_language":"en","source_url":"https://github.com/kaven276/oracle-sql-lib-engine","tags":["javascript"],"install":[{"cmd":"npm install oracle-sql-lib-engine","lang":"bash","label":"npm"},{"cmd":"yarn add oracle-sql-lib-engine","lang":"bash","label":"yarn"},{"cmd":"pnpm add oracle-sql-lib-engine","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required runtime dependency for Oracle database connectivity. The package wraps node-oracledb functionality and expects it to be installed in the consumer project.","package":"oracledb","optional":false}],"imports":[{"note":"Package is ESM-only; CommonJS require() will fail.","wrong":"const osql = require('oracle-sql-lib-engine')","symbol":"default","correct":"import osql from 'oracle-sql-lib-engine'"},{"note":"Named export; ESM only.","wrong":"const { createPool } = require('oracle-sql-lib-engine')","symbol":"createPool","correct":"import { createPool } from 'oracle-sql-lib-engine'"},{"note":"startServer is a named export, not the default.","wrong":"import startServer from 'oracle-sql-lib-engine'","symbol":"startServer","correct":"import { startServer } from 'oracle-sql-lib-engine'"}],"quickstart":{"code":"import osql from 'oracle-sql-lib-engine';\nimport oracledb from 'oracledb';\n\n// Create a pool (must be done before startServer)\nawait osql.createPool({\n  poolAlias: 'task',\n  user: process.env.DB_USER ?? 'scott',\n  password: process.env.DB_PASSWORD ?? 'tiger',\n  connectString: process.env.DB_CONNECT_STRING ?? 'localhost:1521/XE'\n});\n\n// Start HTTP server (default port 3000)\nconst server = await osql.startServer({\n  port: 3000,\n  servicesDir: './services' // directory containing SQL service configs\n});\n\nconsole.log('Server running on port 3000');\n// Then define a service file in ./services/example.js:\n// exports.path = '/api/users';\n// exports.sqltext = 'SELECT * FROM users WHERE id = :id';\n// exports.pool = 'task';","lang":"typescript","description":"Initializes an Oracle connection pool and starts an HTTP server that serves SQL queries defined in service configuration files."},"warnings":[{"fix":"Install Oracle Instant Client (18, 12, or 11.2) and configure library path (e.g., LD_LIBRARY_PATH on Linux, PATH on Windows).","message":"Requires Oracle Instant Client installed on the system. Without it, node-oracledb will fail to connect.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Add '127.0.0.1 <hostname>' to /etc/hosts.","message":"ORA-24408: could not generate unique server group name. This happens if /etc/hosts does not have an entry for your hostname pointing to 127.0.0.1.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Use string representations or BigInt for high-precision numeric columns.","message":"JavaScript number precision is limited to 53 bits. Numbers with more than 15 decimal digits will lose precision when returned from Oracle.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Use import syntax or set type: 'module' in package.json.","message":"Package is ESM-only. Using require() will throw a runtime error.","severity":"breaking","affected_versions":">=0.0.1"}],"env_vars":null,"search_vec":"'-1.0':79 'applic':60 'backend':68 'bind':44 'break':96 'built':18 'central':26 'chang':97 'code':61 'concurr':45 'configur':29 'connect':41 'databas':69 'debug':86 'decoupl':56 'deploy':49 'design':50 'develop':65,77 'direct':71 'downtim':90 'earli':76 'eas':84 'enabl':63 'endpoint':37 'engin':4 'execut':30 'file':13 'focus':82 'frequent':94 'frontend':64 'hot':48 'http':36 'javascript':100 'lib':3 'librari':7 'limit':46 'logic':58 'manag':10 'may':98 'modul':15 'monitor':32 'node':21 'node-oracledb':20 'node.js':6 'occur':99 'oracl':1,11 'oracledb':22 'packag':73 'paramet':43 'pool':42 'pre':78 'provid':24 'queri':34,70 'releas':92 'servic':17 'sql':2,33,57 'sql/plsql':12 'support':39 'team':52 'updat':91 'v0.0.33':8 'via':35 'want':54 'way':27 'write':67 'zero':89 'zero-downtim':88","created_at":"2026-06-05T17:00:10.860681+00:00","updated_at":"2026-06-05T17:00:10.860681+00:00","problems":[{"fix":"Add '127.0.0.1 <your-hostname>' to /etc/hosts","cause":"/etc/hosts missing entry for local hostname pointing to 127.0.0.1","error":"Error: ORA-24408: could not generate unique server group name"},{"fix":"Install Oracle Instant Client and set LD_LIBRARY_PATH (Linux) or PATH (Windows) to the client directory","cause":"Oracle Instant Client not installed or library path not set","error":"Error: DPI-1047: Cannot locate a 64-bit Oracle Client library"},{"fix":"Use import osql from 'oracle-sql-lib-engine' instead of require","cause":"Using require() instead of import","error":"TypeError: osql.createPool is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/kaven276/oracle-sql-lib-engine#readme","github":"https://github.com/kaven276/oracle-sql-lib-engine","docs":null,"changelog":null,"pypi":null,"npm":"oracle-sql-lib-engine","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}