@@ -16,7 +16,6 @@ import {handlerLogger} from './handlerLogger.js';
16
16
import { initMetrics , handlerMetrics } from './handlerMetrics.js' ;
17
17
import { handlerWebPlSql } from './handlerPlSql.js' ;
18
18
import { getPackageVersion } from './version.js' ;
19
- import { poolClose } from './oracle.js' ;
20
19
import { readFileSyncUtf8 } from './file.js' ;
21
20
22
21
/**
@@ -33,10 +32,10 @@ import {readFileSyncUtf8} from './file.js';
33
32
* Create HTTP server.
34
33
* @param {Express } app - express application
35
34
* @param {number } port - port number
36
- * @param {Pool } connectionPool - database connection
35
+ * @param {Pool[] } connectionPools - database connection
37
36
* @returns {Promise<http.Server> } - server
38
37
*/
39
- export const createHttpServer = ( app , port , connectionPool ) => {
38
+ export const createHttpServer = ( app , port , connectionPools ) => {
40
39
return new Promise ( ( resolve ) => {
41
40
// Create server
42
41
// eslint-disable-next-line @typescript-eslint/no-misused-promises
@@ -45,7 +44,7 @@ export const createHttpServer = (app, port, connectionPool) => {
45
44
// Install shutdown handler
46
45
installShutdown ( async ( ) => {
47
46
// Close database pool.
48
- await poolClose ( connectionPool ) ;
47
+ await poolsClose ( connectionPools ) ;
49
48
50
49
// Close server
51
50
return new Promise ( ( resolve ) => server . close ( ( ) => resolve ( ) ) ) ;
@@ -64,10 +63,10 @@ export const createHttpServer = (app, port, connectionPool) => {
64
63
* @param {string } sslKeyFilename - ssl
65
64
* @param {string } sslCertFilename - ssl
66
65
* @param {number } port - port number
67
- * @param {Pool } connectionPool - database connection
66
+ * @param {Pool[] } connectionPools - database connection
68
67
* @returns {Promise<https.Server> } - server
69
68
*/
70
- export const createHttpsServer = ( app , sslKeyFilename , sslCertFilename , port , connectionPool ) => {
69
+ export const createHttpsServer = ( app , sslKeyFilename , sslCertFilename , port , connectionPools ) => {
71
70
return new Promise ( ( resolve ) => {
72
71
// Load certificates
73
72
const key = readFileSyncUtf8 ( sslKeyFilename ) ;
@@ -80,7 +79,7 @@ export const createHttpsServer = (app, sslKeyFilename, sslCertFilename, port, co
80
79
// Install shutdown handler
81
80
installShutdown ( async ( ) => {
82
81
// Close database pool.
83
- await poolClose ( connectionPool ) ;
82
+ await poolsClose ( connectionPools ) ;
84
83
85
84
// Close server
86
85
return new Promise ( ( resolve ) => server . close ( ( ) => resolve ( ) ) ) ;
@@ -94,30 +93,17 @@ export const createHttpsServer = (app, sslKeyFilename, sslCertFilename, port, co
94
93
} ;
95
94
96
95
/**
97
- * Start generic server.
96
+ * Start HTTP server.
98
97
* @param {configType } config - The config.
99
98
* @returns {Promise<void> } - Promise.
100
99
*/
101
- export const startServer = async ( config ) => {
102
- debug ( 'startServer ' , config ) ;
100
+ export const startHttpServer = async ( config ) => {
101
+ debug ( 'startHttpServer ' , config ) ;
103
102
104
103
config = z$configType . parse ( config ) ;
105
104
106
105
console . log ( `WEB_PL/SQL ${ getPackageVersion ( ) } ` ) ;
107
106
108
- /** @type {Pool[] } */
109
- const pools = [ ] ;
110
-
111
- // Install shutdown handler
112
- installShutdown ( async ( ) => {
113
- // Close database pools.
114
- await poolsClose ( pools ) ;
115
- pools . length = 0 ;
116
-
117
- // Close server
118
- return new Promise ( ( resolve ) => server . close ( ( ) => resolve ( ) ) ) ;
119
- } ) ;
120
-
121
107
// Create express app
122
108
const app = express ( ) ;
123
109
@@ -144,11 +130,14 @@ export const startServer = async (config) => {
144
130
app . use ( handlerLogger ( config . loggerFilename ) ) ;
145
131
}
146
132
133
+ /** @type {Pool[] } */
134
+ const connectionPools = [ ] ;
135
+
147
136
// Oracle pl/sql express middleware
148
137
for ( const i of config . routePlSql ) {
149
138
// Allocate the Oracle database pool
150
139
const pool = await poolCreate ( i . user , i . password , i . connectString ) ;
151
- pools . push ( pool ) ;
140
+ connectionPools . push ( pool ) ;
152
141
153
142
app . use ( `${ i . route } /:name?` , handlerWebPlSql ( pool , i ) ) ;
154
143
@@ -170,6 +159,5 @@ export const startServer = async (config) => {
170
159
} , 1000 ) ;
171
160
}
172
161
173
- // listen on port
174
- const server = app . listen ( config . port ) ;
162
+ await createHttpServer ( app , config . port , connectionPools ) ;
175
163
} ;
0 commit comments