vona-module-a-version 5.0.28 → 5.0.30
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 +41 -17
- package/dist/service/database.d.ts +7 -4
- package/dist/service/version.d.ts +2 -1
- package/dist/types/version.d.ts +2 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -131,46 +131,68 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
131
131
|
get configDatabase() {
|
|
132
132
|
return this.app.config.database;
|
|
133
133
|
}
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
getDatabasePrefix(configInstanceBase) {
|
|
135
|
+
const instanceName = configInstanceBase?.isolate ? `isolate${__separator}${configInstanceBase.name}` : 'share';
|
|
136
|
+
return `vona${__separator}test${__separator}${this.app.name}${__separator}${instanceName}${__separator}`;
|
|
136
137
|
}
|
|
137
138
|
async databaseInitStartup() {
|
|
138
139
|
// database
|
|
139
|
-
await this.
|
|
140
|
-
// version start
|
|
141
|
-
await this.scope.service.version.__start();
|
|
140
|
+
await this.__preparedatabases(true);
|
|
142
141
|
}
|
|
143
142
|
async databaseNameStartup() {
|
|
144
143
|
// database
|
|
145
|
-
await this.
|
|
144
|
+
await this.__preparedatabases(false);
|
|
146
145
|
}
|
|
147
|
-
async __fetchDatabases(client) {
|
|
146
|
+
async __fetchDatabases(client, configInstanceBase) {
|
|
147
|
+
const databasePrefix = this.getDatabasePrefix(configInstanceBase);
|
|
148
148
|
// dbs
|
|
149
|
-
let dbs = await client.connection.schema.fetchDatabases(
|
|
149
|
+
let dbs = await client.connection.schema.fetchDatabases(databasePrefix);
|
|
150
150
|
// filter
|
|
151
151
|
dbs = dbs.filter(db => {
|
|
152
|
-
const _time = db.name.substring(
|
|
152
|
+
const _time = db.name.substring(databasePrefix.length);
|
|
153
153
|
return _time.length === __timeFormat.length;
|
|
154
154
|
});
|
|
155
155
|
// ok
|
|
156
156
|
return dbs;
|
|
157
157
|
}
|
|
158
|
-
async __createDatabase(client) {
|
|
158
|
+
async __createDatabase(client, configInstanceBase) {
|
|
159
|
+
const databasePrefix = this.getDatabasePrefix(configInstanceBase);
|
|
159
160
|
// create
|
|
160
|
-
const databaseName = `${
|
|
161
|
+
const databaseName = `${databasePrefix}${moment().format(__timeFormat)}`;
|
|
161
162
|
await client.connection.schema.createDatabase(databaseName);
|
|
162
163
|
return databaseName;
|
|
163
164
|
}
|
|
164
|
-
async
|
|
165
|
+
async __preparedatabases(versionStart) {
|
|
166
|
+
// default
|
|
167
|
+
await this.bean.database.switchDb(async () => {
|
|
168
|
+
await this.__preparedatabase(versionStart);
|
|
169
|
+
}, 'default');
|
|
170
|
+
// isolate
|
|
171
|
+
for (const configInstanceBase of this.app.config.instances) {
|
|
172
|
+
if (!configInstanceBase.isolate) continue;
|
|
173
|
+
if (!configInstanceBase.isolateClient) throw new Error(`should specify isolateClient for isolate instance: ${configInstanceBase.name}`);
|
|
174
|
+
await this.bean.database.switchDb(async () => {
|
|
175
|
+
await this.__preparedatabase(versionStart, configInstanceBase);
|
|
176
|
+
}, configInstanceBase.isolateClient);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async __preparedatabase(versionStart, configInstanceBase) {
|
|
180
|
+
await this.__preparedatabaseInner(configInstanceBase);
|
|
181
|
+
if (versionStart) {
|
|
182
|
+
await this.scope.service.version.__start();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async __preparedatabaseInner(configInstanceBase) {
|
|
165
186
|
if (this.app.meta.isProd) {
|
|
166
187
|
// donothing
|
|
167
188
|
return;
|
|
168
189
|
}
|
|
190
|
+
const databasePrefix = this.getDatabasePrefix(configInstanceBase);
|
|
169
191
|
// client
|
|
170
192
|
const client = this.bean.database.current.client;
|
|
171
193
|
// get current database name
|
|
172
194
|
let databaseName = client.getDatabaseName();
|
|
173
|
-
const isTestDatabase = databaseName.indexOf(
|
|
195
|
+
const isTestDatabase = databaseName.indexOf(databasePrefix) === 0;
|
|
174
196
|
// dev/debug db
|
|
175
197
|
if (this.app.meta.isDev) {
|
|
176
198
|
// if enable testDatabase
|
|
@@ -180,14 +202,15 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
180
202
|
// donothing
|
|
181
203
|
return;
|
|
182
204
|
}
|
|
183
|
-
const dbs = await this.__fetchDatabases(client);
|
|
205
|
+
const dbs = await this.__fetchDatabases(client, configInstanceBase);
|
|
184
206
|
if (dbs.length === 0) {
|
|
185
|
-
databaseName = await this.__createDatabase(client);
|
|
207
|
+
databaseName = await this.__createDatabase(client, configInstanceBase);
|
|
186
208
|
} else {
|
|
187
209
|
databaseName = dbs[0].name;
|
|
188
210
|
}
|
|
189
211
|
// set config and reload client
|
|
190
212
|
await client.changeConfigAndReload(databaseName);
|
|
213
|
+
this.$logger.silly(chalk.cyan(`dialect: ${client.db.dialectName}`));
|
|
191
214
|
this.$logger.silly(chalk.cyan(`database: ${databaseName}, pid: ${process.pid}`));
|
|
192
215
|
}
|
|
193
216
|
// test db
|
|
@@ -198,15 +221,16 @@ let ServiceDatabase = (_dec$7 = Service(), _dec2$7 = BeanInfo({
|
|
|
198
221
|
return;
|
|
199
222
|
}
|
|
200
223
|
// drop old databases
|
|
201
|
-
const dbs = await this.__fetchDatabases(client);
|
|
224
|
+
const dbs = await this.__fetchDatabases(client, configInstanceBase);
|
|
202
225
|
for (const db of dbs) {
|
|
203
226
|
await client.connection.schema.dropDatabase(db.name);
|
|
204
227
|
}
|
|
205
228
|
// create database
|
|
206
|
-
const databaseName = await this.__createDatabase(client);
|
|
229
|
+
const databaseName = await this.__createDatabase(client, configInstanceBase);
|
|
207
230
|
// set config and reload client
|
|
208
231
|
await client.changeConfigAndReload(databaseName);
|
|
209
232
|
// database ready
|
|
233
|
+
this.$logger.silly(chalk.cyan(`dialect: ${client.db.dialectName}`));
|
|
210
234
|
this.$logger.silly(chalk.cyan(`database: ${databaseName}, pid: ${process.pid}`));
|
|
211
235
|
}
|
|
212
236
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import type { ConfigInstanceBase } from 'vona-module-a-instance';
|
|
1
2
|
import type { ServiceDatabaseClient } from 'vona-module-a-orm';
|
|
2
3
|
import { BeanBase } from 'vona';
|
|
3
4
|
export declare class ServiceDatabase extends BeanBase {
|
|
4
5
|
get configDatabase(): import("vona-module-a-orm").ConfigDatabase;
|
|
5
|
-
|
|
6
|
+
getDatabasePrefix(configInstanceBase?: ConfigInstanceBase): string;
|
|
6
7
|
databaseInitStartup(): Promise<void>;
|
|
7
8
|
databaseNameStartup(): Promise<void>;
|
|
8
|
-
__fetchDatabases(client: ServiceDatabaseClient): Promise<import("vona-module-a-orm").IFetchDatabasesResultItem[]>;
|
|
9
|
-
__createDatabase(client: ServiceDatabaseClient): Promise<string>;
|
|
10
|
-
|
|
9
|
+
__fetchDatabases(client: ServiceDatabaseClient, configInstanceBase?: ConfigInstanceBase): Promise<import("vona-module-a-orm").IFetchDatabasesResultItem[]>;
|
|
10
|
+
__createDatabase(client: ServiceDatabaseClient, configInstanceBase?: ConfigInstanceBase): Promise<string>;
|
|
11
|
+
__preparedatabases(versionStart: boolean): Promise<void>;
|
|
12
|
+
__preparedatabase(versionStart: boolean, configInstanceBase?: ConfigInstanceBase): Promise<void>;
|
|
13
|
+
__preparedatabaseInner(configInstanceBase?: ConfigInstanceBase): Promise<void>;
|
|
11
14
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IInstanceRecord } from 'vona';
|
|
2
|
+
import type { ConfigInstanceBase } from 'vona-module-a-instance';
|
|
2
3
|
import type { IInstanceStartupOptions } from 'vona-module-a-startup';
|
|
3
4
|
import type { IMetaVersionOptions, IMetaVersionOptionsInner } from '../types/version.ts';
|
|
4
5
|
import { BeanBase } from 'vona';
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IInstanceRecord } from 'vona';
|
|
2
|
+
import type { ConfigInstanceBase } from 'vona-module-a-instance';
|
|
2
3
|
export interface IMetaVersionOptions {
|
|
3
4
|
scene: 'update' | 'init' | 'test';
|
|
4
5
|
instanceName?: keyof IInstanceRecord;
|