vona-module-a-version 5.0.43 → 5.0.44
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/dist/index.js +23 -20
- package/dist/service/database.d.ts +3 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -131,9 +131,9 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
131
131
|
get configDatabase() {
|
|
132
132
|
return this.app.config.database;
|
|
133
133
|
}
|
|
134
|
-
getDatabasePrefix(configInstanceBase) {
|
|
135
|
-
const
|
|
136
|
-
return `vona${__separator}test${__separator}${this.app.name}${__separator}${
|
|
134
|
+
getDatabasePrefix(instanceName, configInstanceBase) {
|
|
135
|
+
const prefix = configInstanceBase?.isolate ? `isolate${__separator}${instanceName}` : 'share';
|
|
136
|
+
return `vona${__separator}test${__separator}${this.app.name}${__separator}${prefix}${__separator}`;
|
|
137
137
|
}
|
|
138
138
|
async databaseInitStartup() {
|
|
139
139
|
// database
|
|
@@ -143,13 +143,13 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
143
143
|
// database
|
|
144
144
|
await this.__prepareDatabases(false);
|
|
145
145
|
}
|
|
146
|
-
async prepareDatabase(clientName, versionStart, configInstanceBase) {
|
|
146
|
+
async prepareDatabase(clientName, versionStart, instanceName, configInstanceBase) {
|
|
147
147
|
await this.bean.database.switchDb(async () => {
|
|
148
|
-
await this.__prepareDatabase(versionStart, configInstanceBase);
|
|
148
|
+
await this.__prepareDatabase(versionStart, instanceName, configInstanceBase);
|
|
149
149
|
}, clientName);
|
|
150
150
|
}
|
|
151
|
-
async __fetchDatabases(client, configInstanceBase) {
|
|
152
|
-
const databasePrefix = this.getDatabasePrefix(configInstanceBase);
|
|
151
|
+
async __fetchDatabases(client, instanceName, configInstanceBase) {
|
|
152
|
+
const databasePrefix = this.getDatabasePrefix(instanceName, configInstanceBase);
|
|
153
153
|
// dbs
|
|
154
154
|
let dbs = await client.connection.schema.fetchDatabases(databasePrefix);
|
|
155
155
|
// filter
|
|
@@ -160,8 +160,8 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
160
160
|
// ok
|
|
161
161
|
return dbs;
|
|
162
162
|
}
|
|
163
|
-
async __createDatabase(client, configInstanceBase) {
|
|
164
|
-
const databasePrefix = this.getDatabasePrefix(configInstanceBase);
|
|
163
|
+
async __createDatabase(client, instanceName, configInstanceBase) {
|
|
164
|
+
const databasePrefix = this.getDatabasePrefix(instanceName, configInstanceBase);
|
|
165
165
|
// create
|
|
166
166
|
const databaseName = `${databasePrefix}${moment().format(__timeFormat)}`;
|
|
167
167
|
await client.connection.schema.createDatabase(databaseName);
|
|
@@ -171,24 +171,27 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
171
171
|
// default
|
|
172
172
|
await this.prepareDatabase('default', versionStart);
|
|
173
173
|
// isolate
|
|
174
|
-
for (const
|
|
174
|
+
for (const key in this.app.config.instance.instances) {
|
|
175
|
+
const instanceName = key;
|
|
176
|
+
const configInstanceBase = this.app.config.instance.instances[instanceName];
|
|
177
|
+
if (configInstanceBase === false) continue;
|
|
175
178
|
if (!configInstanceBase.isolate) continue;
|
|
176
|
-
if (!configInstanceBase.isolateClient) throw new Error(`should specify isolateClient for isolate instance: ${
|
|
177
|
-
await this.prepareDatabase(configInstanceBase.isolateClient, versionStart, configInstanceBase);
|
|
179
|
+
if (!configInstanceBase.isolateClient) throw new Error(`should specify isolateClient for isolate instance: ${instanceName}`);
|
|
180
|
+
await this.prepareDatabase(configInstanceBase.isolateClient, versionStart, instanceName, configInstanceBase);
|
|
178
181
|
}
|
|
179
182
|
}
|
|
180
|
-
async __prepareDatabase(versionStart, configInstanceBase) {
|
|
181
|
-
await this.__prepareDatabaseInner(configInstanceBase);
|
|
183
|
+
async __prepareDatabase(versionStart, instanceName, configInstanceBase) {
|
|
184
|
+
await this.__prepareDatabaseInner(instanceName, configInstanceBase);
|
|
182
185
|
if (versionStart) {
|
|
183
186
|
await this.scope.service.version.__start();
|
|
184
187
|
}
|
|
185
188
|
}
|
|
186
|
-
async __prepareDatabaseInner(configInstanceBase) {
|
|
189
|
+
async __prepareDatabaseInner(instanceName, configInstanceBase) {
|
|
187
190
|
if (this.app.meta.isProd) {
|
|
188
191
|
// donothing
|
|
189
192
|
return;
|
|
190
193
|
}
|
|
191
|
-
const databasePrefix = this.getDatabasePrefix(configInstanceBase);
|
|
194
|
+
const databasePrefix = this.getDatabasePrefix(instanceName, configInstanceBase);
|
|
192
195
|
// client
|
|
193
196
|
const client = this.bean.database.current.client;
|
|
194
197
|
// get current database name
|
|
@@ -203,9 +206,9 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
203
206
|
// donothing
|
|
204
207
|
return;
|
|
205
208
|
}
|
|
206
|
-
const dbs = await this.__fetchDatabases(client, configInstanceBase);
|
|
209
|
+
const dbs = await this.__fetchDatabases(client, instanceName, configInstanceBase);
|
|
207
210
|
if (dbs.length === 0) {
|
|
208
|
-
databaseName = await this.__createDatabase(client, configInstanceBase);
|
|
211
|
+
databaseName = await this.__createDatabase(client, instanceName, configInstanceBase);
|
|
209
212
|
} else {
|
|
210
213
|
databaseName = dbs[0].name;
|
|
211
214
|
}
|
|
@@ -222,12 +225,12 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
222
225
|
return;
|
|
223
226
|
}
|
|
224
227
|
// drop old databases
|
|
225
|
-
const dbs = await this.__fetchDatabases(client, configInstanceBase);
|
|
228
|
+
const dbs = await this.__fetchDatabases(client, instanceName, configInstanceBase);
|
|
226
229
|
for (const db of dbs) {
|
|
227
230
|
await client.connection.schema.dropDatabase(db.name);
|
|
228
231
|
}
|
|
229
232
|
// create database
|
|
230
|
-
const databaseName = await this.__createDatabase(client, configInstanceBase);
|
|
233
|
+
const databaseName = await this.__createDatabase(client, instanceName, configInstanceBase);
|
|
231
234
|
// set config and reload client
|
|
232
235
|
await client.changeConfigConnectionAndReloadWorker(databaseName);
|
|
233
236
|
// database ready
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import type { IInstanceRecord } from 'vona';
|
|
1
2
|
import type { ConfigInstanceBase } from 'vona-module-a-instance';
|
|
2
3
|
import type { IDatabaseClientRecord } from 'vona-module-a-orm';
|
|
3
4
|
import { BeanBase } from 'vona';
|
|
4
5
|
export declare class ServiceDatabase extends BeanBase {
|
|
5
6
|
get configDatabase(): import("vona-module-a-orm").ConfigDatabase;
|
|
6
|
-
getDatabasePrefix(configInstanceBase?: ConfigInstanceBase): string;
|
|
7
|
+
getDatabasePrefix(instanceName?: keyof IInstanceRecord, configInstanceBase?: ConfigInstanceBase): string;
|
|
7
8
|
databaseInitStartup(): Promise<void>;
|
|
8
9
|
databaseNameStartup(): Promise<void>;
|
|
9
|
-
prepareDatabase(clientName: keyof IDatabaseClientRecord, versionStart: boolean, configInstanceBase?: ConfigInstanceBase): Promise<void>;
|
|
10
|
+
prepareDatabase(clientName: keyof IDatabaseClientRecord, versionStart: boolean, instanceName?: keyof IInstanceRecord, configInstanceBase?: ConfigInstanceBase): Promise<void>;
|
|
10
11
|
private __fetchDatabases;
|
|
11
12
|
private __createDatabase;
|
|
12
13
|
private __prepareDatabases;
|