@mikro-orm/oracledb 7.1.9-dev.1 → 7.1.9-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/OracleSchemaGenerator.d.ts +7 -1
- package/OracleSchemaGenerator.js +20 -10
- package/package.json +3 -3
|
@@ -11,7 +11,13 @@ export declare class OracleSchemaGenerator extends SchemaGenerator {
|
|
|
11
11
|
/**
|
|
12
12
|
* creates new database and connects to it
|
|
13
13
|
*/
|
|
14
|
-
createDatabase(name?: string
|
|
14
|
+
createDatabase(name?: string, options?: {
|
|
15
|
+
skipOnConnect?: boolean;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Drops the user representing the database. When dropping the user we are connected as, we stay
|
|
19
|
+
* connected as the management user, as the dropped one can no longer authenticate.
|
|
20
|
+
*/
|
|
15
21
|
dropDatabase(name?: string): Promise<void>;
|
|
16
22
|
/**
|
|
17
23
|
* Oracle uses CASCADE CONSTRAINT in DROP TABLE and has no native enums,
|
package/OracleSchemaGenerator.js
CHANGED
|
@@ -9,7 +9,7 @@ export class OracleSchemaGenerator extends SchemaGenerator {
|
|
|
9
9
|
/**
|
|
10
10
|
* creates new database and connects to it
|
|
11
11
|
*/
|
|
12
|
-
async createDatabase(name) {
|
|
12
|
+
async createDatabase(name, options) {
|
|
13
13
|
name ??= this.config.get('user');
|
|
14
14
|
/* v8 ignore next: tableSpace fallback */
|
|
15
15
|
const tableSpace = this.config.get('schemaGenerator').tableSpace ?? 'mikro_orm';
|
|
@@ -31,14 +31,24 @@ export class OracleSchemaGenerator extends SchemaGenerator {
|
|
|
31
31
|
await this.execute(sql);
|
|
32
32
|
await this.execute(`grant connect, resource to ${this.platform.quoteIdentifier(name)}`);
|
|
33
33
|
this.config.set('user', name);
|
|
34
|
-
await this.driver.reconnect();
|
|
34
|
+
await this.driver.reconnect(options);
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Drops the user representing the database. When dropping the user we are connected as, we stay
|
|
38
|
+
* connected as the management user, as the dropped one can no longer authenticate.
|
|
39
|
+
*/
|
|
36
40
|
async dropDatabase(name) {
|
|
37
41
|
name ??= this.config.get('dbName');
|
|
42
|
+
const originalUser = this.getOriginalUser();
|
|
38
43
|
this.config.set('user', this.helper.getManagementDbName());
|
|
39
|
-
await this.driver.reconnect();
|
|
44
|
+
await this.driver.reconnect({ skipOnConnect: true });
|
|
40
45
|
await this.execute(this.helper.getDropDatabaseSQL(name));
|
|
41
|
-
|
|
46
|
+
// the dropped user is gone, so a cached `ensureDatabase` result for it is stale
|
|
47
|
+
this.lastEnsuredDatabase = undefined;
|
|
48
|
+
if (originalUser !== name) {
|
|
49
|
+
this.config.set('user', originalUser);
|
|
50
|
+
await this.driver.reconnect({ skipOnConnect: true });
|
|
51
|
+
}
|
|
42
52
|
}
|
|
43
53
|
/**
|
|
44
54
|
* Oracle uses CASCADE CONSTRAINT in DROP TABLE and has no native enums,
|
|
@@ -78,14 +88,14 @@ export class OracleSchemaGenerator extends SchemaGenerator {
|
|
|
78
88
|
catch (e) {
|
|
79
89
|
if (e.code === 'ORA-01017' && this.config.get('user') !== this.helper.getManagementDbName()) {
|
|
80
90
|
this.config.set('user', this.helper.getManagementDbName());
|
|
81
|
-
await this.driver.reconnect();
|
|
91
|
+
await this.driver.reconnect({ skipOnConnect: true });
|
|
82
92
|
const result = await this.ensureDatabase();
|
|
83
93
|
// Restore connection to the original user (createDatabase does this
|
|
84
94
|
// when the user doesn't exist, but we must handle the case where
|
|
85
95
|
// the user already exists and ensureDatabase returned early)
|
|
86
96
|
if (this.config.get('user') !== dbName) {
|
|
87
97
|
this.config.set('user', dbName);
|
|
88
|
-
await this.driver.reconnect();
|
|
98
|
+
await this.driver.reconnect({ skipOnConnect: true });
|
|
89
99
|
}
|
|
90
100
|
return result;
|
|
91
101
|
}
|
|
@@ -94,8 +104,8 @@ export class OracleSchemaGenerator extends SchemaGenerator {
|
|
|
94
104
|
this.lastEnsuredDatabase = dbName;
|
|
95
105
|
if (!exists) {
|
|
96
106
|
this.config.set('user', this.helper.getManagementDbName());
|
|
97
|
-
await this.driver.reconnect();
|
|
98
|
-
await this.createDatabase(dbName);
|
|
107
|
+
await this.driver.reconnect({ skipOnConnect: true });
|
|
108
|
+
await this.createDatabase(dbName, { skipOnConnect: true });
|
|
99
109
|
if (options?.create) {
|
|
100
110
|
await this.create(options);
|
|
101
111
|
}
|
|
@@ -125,7 +135,7 @@ export class OracleSchemaGenerator extends SchemaGenerator {
|
|
|
125
135
|
}
|
|
126
136
|
const originalUser = this.getOriginalUser();
|
|
127
137
|
this.config.set('user', this.helper.getManagementDbName());
|
|
128
|
-
await this.driver.reconnect();
|
|
138
|
+
await this.driver.reconnect({ skipOnConnect: true });
|
|
129
139
|
return originalUser;
|
|
130
140
|
}
|
|
131
141
|
/**
|
|
@@ -136,7 +146,7 @@ export class OracleSchemaGenerator extends SchemaGenerator {
|
|
|
136
146
|
return;
|
|
137
147
|
}
|
|
138
148
|
this.config.set('user', originalUser);
|
|
139
|
-
await this.driver.reconnect();
|
|
149
|
+
await this.driver.reconnect({ skipOnConnect: true });
|
|
140
150
|
}
|
|
141
151
|
/**
|
|
142
152
|
* Grants DBA (or fallback individual privileges) to the main user.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikro-orm/oracledb",
|
|
3
|
-
"version": "7.1.9-dev.
|
|
3
|
+
"version": "7.1.9-dev.2",
|
|
4
4
|
"description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL, SQLite, MSSQL and Oracle databases.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data-mapper",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"copy": "node ../../scripts/copy.mjs"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@mikro-orm/sql": "7.1.9-dev.
|
|
45
|
+
"@mikro-orm/sql": "7.1.9-dev.2",
|
|
46
46
|
"kysely": "0.29.4",
|
|
47
47
|
"oracledb": "7.0.1"
|
|
48
48
|
},
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"@mikro-orm/core": "^7.1.8"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
|
-
"@mikro-orm/core": "7.1.9-dev.
|
|
53
|
+
"@mikro-orm/core": "7.1.9-dev.2"
|
|
54
54
|
},
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">= 22.17.0"
|