vona-module-a-version 5.1.17 → 5.1.20

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 CHANGED
@@ -1,11 +1,11 @@
1
- import { $makeLocaleMagic, $Class, BeanInfo, BeanBase, BeanScopeBase } from 'vona';
1
+ import { $makeLocaleMagic, $Class, BeanInfo, BeanBase, getDatabaseTestPrefix, withIsolatedTestDatabaseDiscovery, resolveVonaLocalPaths, assertTestRunOwner, assertDisposableDatabaseName as assertDisposableDatabaseName$1, assertIsolatedTestPath, BeanScopeBase } from 'vona';
2
2
  import { __decorate, __metadata } from 'tslib';
3
3
  import { Api, v } from 'vona-module-a-openapiutils';
4
4
  import { EntityBaseSimple, Entity, Model, BeanModelBase } from 'vona-module-a-orm';
5
5
  import chalk from 'chalk';
6
6
  import { DateTime } from 'luxon';
7
+ import path from 'node:path';
7
8
  import { Service, Scope } from 'vona-module-a-bean';
8
- import { createHash } from 'node:crypto';
9
9
  import { Event, BeanEventBase } from 'vona-module-a-event';
10
10
  import { Hmr } from 'vona-module-a-hmrbase';
11
11
  import { Meta } from 'vona-module-a-meta';
@@ -100,19 +100,6 @@ ModelViewRecord = __decorate([Model({
100
100
  })], ModelViewRecord);
101
101
 
102
102
  const DATABASE_NAME_MAX_BYTES = 63;
103
- const APP_NAME_MAX_BYTES = 13;
104
- const HASH_LENGTH = 10;
105
- const TIMESTAMP_LENGTH = 15;
106
- function getDatabaseTestPrefix(appName, scope) {
107
- const readablePrefix = getReadablePrefix(appName, scope);
108
- if (Buffer.byteLength(readablePrefix, 'utf8') + TIMESTAMP_LENGTH <= DATABASE_NAME_MAX_BYTES) {
109
- return readablePrefix;
110
- }
111
- const appHead = truncateUtf8(appName, APP_NAME_MAX_BYTES);
112
- const scopeKind = scope === 'share' ? 's' : 'i';
113
- const namespaceHash = hash(`${appName}\0${scope}`);
114
- return `vona-test-${appHead}-${scopeKind}-${namespaceHash}-`;
115
- }
116
103
  function createDatabaseTestName(databasePrefix, timestamp) {
117
104
  const databaseName = `${databasePrefix}${timestamp}`;
118
105
  if (Buffer.byteLength(databaseName, 'utf8') > DATABASE_NAME_MAX_BYTES) {
@@ -120,27 +107,20 @@ function createDatabaseTestName(databasePrefix, timestamp) {
120
107
  }
121
108
  return databaseName;
122
109
  }
123
- function getReadablePrefix(appName, scope) {
124
- if (scope === 'share') return `vona-test-${appName}-s-`;
125
- return `vona-test-${appName}-i-${scope.slice('isolate-'.length)}-`;
126
- }
127
- function hash(value) {
128
- return createHash('sha256').update(value).digest('base64url').slice(0, HASH_LENGTH);
129
- }
130
- function truncateUtf8(value, maxBytes) {
131
- let result = '';
132
- let bytes = 0;
133
- for (const char of value) {
134
- const charBytes = Buffer.byteLength(char, 'utf8');
135
- if (bytes + charBytes > maxBytes) break;
136
- result += char;
137
- bytes += charBytes;
138
- }
139
- return result;
140
- }
141
110
 
142
111
  const __separator = '-';
143
112
  const __timeFormat = `yyyyMMdd${__separator}HHmmss`;
113
+ const devDatabasePreparations = new WeakMap();
114
+ function assertDisposableDatabaseName(databaseName, databasePrefix, sqliteRoot) {
115
+ const filename = sqliteRoot ? path.basename(databaseName, '.db') : databaseName;
116
+ assertDisposableDatabaseName$1(filename, databasePrefix);
117
+ if (sqliteRoot) {
118
+ if (!path.isAbsolute(databaseName) || path.extname(databaseName) !== '.db') {
119
+ throw new Error(`Database is outside the disposable SQLite directory: ${databaseName}`);
120
+ }
121
+ assertIsolatedTestPath(databaseName, path.join(sqliteRoot, `${filename}.db`));
122
+ }
123
+ }
144
124
  let ServiceDatabase = class ServiceDatabase extends BeanBase {
145
125
  get configDatabase() {
146
126
  return this.app.config.database;
@@ -149,6 +129,93 @@ let ServiceDatabase = class ServiceDatabase extends BeanBase {
149
129
  const scope = configInstanceBase?.isolate ? `isolate${__separator}${instanceName}` : 'share';
150
130
  return getDatabaseTestPrefix(this.app.name, scope);
151
131
  }
132
+ get createdInstanceNames() {
133
+ return [...(devDatabasePreparations.get(this.app)?.createdInstances ?? [])];
134
+ }
135
+ consumeCreatedInstance(instanceName) {
136
+ devDatabasePreparations.get(this.app)?.createdInstances.delete(instanceName);
137
+ }
138
+ async prepareDevDatabases(reset = process.env.VONA_DB_RESET === 'true') {
139
+ if (!this.app.meta.isDev) return;
140
+ if (!this.configDatabase.testDatabase) {
141
+ if (reset) {
142
+ throw new Error('db:reset requires database.testDatabase=true in the dev configuration');
143
+ }
144
+ return;
145
+ }
146
+ if (devDatabasePreparations.get(this.app)?.prepared) return;
147
+ if (typeof this.configDatabase.defaultClient !== 'string') {
148
+ throw new TypeError('Disposable dev database preparation requires a static default client');
149
+ }
150
+ // Validate every target before clearing any application resources.
151
+ const plans = [];
152
+ const clientNames = new Set();
153
+ for (const target of this.__databaseTargets()) {
154
+ if (target.configInstanceBase?.isolate && !target.configInstanceBase.id) {
155
+ throw new Error(`should specify id for isolate instance: ${target.instanceName}`);
156
+ }
157
+ const clientName = this.$scope.orm.service.database.prepareClientNameReal(target.clientName);
158
+ if (clientNames.has(clientName)) {
159
+ throw new Error(`Disposable database targets must use distinct clients: ${clientName}`);
160
+ }
161
+ clientNames.add(clientName);
162
+ plans.push(await this.bean.database.switchDb(async () => {
163
+ const client = this.bean.database.current.client;
164
+ const databasePrefix = this.getDatabasePrefix(target.instanceName, target.configInstanceBase);
165
+ const sqliteRoot = this.__sqliteRoot(client);
166
+ const currentName = client.getDatabaseName();
167
+ const currentFilename = sqliteRoot ? path.basename(currentName, '.db') : currentName;
168
+ if (currentFilename.startsWith(databasePrefix)) {
169
+ assertDisposableDatabaseName(currentName, databasePrefix, sqliteRoot);
170
+ if (reset) {
171
+ throw new Error('db:reset requires a connection outside the disposable database');
172
+ }
173
+ }
174
+ const dbs = await this.__fetchDatabases(client, target.instanceName, target.configInstanceBase);
175
+ for (const db of dbs) {
176
+ assertDisposableDatabaseName(db.name, databasePrefix, sqliteRoot);
177
+ }
178
+ return {
179
+ ...target,
180
+ databasePrefix,
181
+ sqliteRoot,
182
+ databases: dbs.map(db => db.name),
183
+ create: reset
184
+ };
185
+ }, target.clientName));
186
+ }
187
+ if (!reset) {
188
+ const missing = plans.find(plan => plan.databases.length === 0);
189
+ if (missing) this.__missingDevDatabase(missing.instanceName);
190
+ }
191
+ if (reset) {
192
+ await this.$scope.redis.service.redis.clearAllData();
193
+ await this.bean.worker.setAlive();
194
+ }
195
+ const preparation = {
196
+ prepared: false,
197
+ createdInstances: new Set()
198
+ };
199
+ for (const plan of plans) {
200
+ await this.bean.database.switchDb(async () => {
201
+ const client = this.bean.database.current.client;
202
+ if (reset) {
203
+ for (const databaseName of plan.databases) {
204
+ assertDisposableDatabaseName(databaseName, plan.databasePrefix, plan.sqliteRoot);
205
+ await client.connection.schema.dropDatabase(databaseName);
206
+ }
207
+ }
208
+ const databaseName = plan.create ? await this.__createDatabase(client, plan.instanceName, plan.configInstanceBase) : plan.databases[0];
209
+ assertDisposableDatabaseName(databaseName, plan.databasePrefix, plan.sqliteRoot);
210
+ await client.changeConfigConnectionAndReloadWorker(databaseName);
211
+ if (plan.create) preparation.createdInstances.add(plan.instanceName ?? '');
212
+ this.$logger.silly(chalk.cyan(`dialect: ${client.db.dialectName}`));
213
+ this.$logger.silly(chalk.cyan(`database: ${databaseName}, pid: ${process.pid}`));
214
+ }, plan.clientName);
215
+ }
216
+ preparation.prepared = true;
217
+ devDatabasePreparations.set(this.app, preparation);
218
+ }
152
219
  async databaseInitStartup() {
153
220
  // database
154
221
  await this.__prepareDatabases(true);
@@ -158,9 +225,13 @@ let ServiceDatabase = class ServiceDatabase extends BeanBase {
158
225
  await this.__prepareDatabases(false);
159
226
  }
160
227
  async prepareDatabase(clientName, versionStart, instanceName, configInstanceBase) {
161
- await this.bean.database.switchDb(async () => {
162
- await this.__prepareDatabase(versionStart, instanceName, configInstanceBase);
163
- }, clientName);
228
+ const clientNameReal = clientName === 'default' ? this.configDatabase.defaultClient : clientName;
229
+ const clientConfig = this.configDatabase.clients[clientNameReal];
230
+ await withIsolatedTestDatabaseDiscovery(this.app, clientNameReal, clientConfig, async () => {
231
+ await this.bean.database.switchDb(async () => {
232
+ await this.__prepareDatabase(versionStart, instanceName, configInstanceBase);
233
+ }, clientName);
234
+ });
164
235
  }
165
236
  async __fetchDatabases(client, instanceName, configInstanceBase) {
166
237
  const databasePrefix = this.getDatabasePrefix(instanceName, configInstanceBase);
@@ -171,17 +242,31 @@ let ServiceDatabase = class ServiceDatabase extends BeanBase {
171
242
  const databaseName = createDatabaseTestName(databasePrefix, DateTime.now().toFormat(__timeFormat));
172
243
  return await client.connection.schema.createDatabase(databaseName);
173
244
  }
174
- async __prepareDatabases(versionStart) {
175
- // default
176
- await this.prepareDatabase('default', versionStart);
177
- // isolate
245
+ __databaseTargets() {
246
+ const targets = [{
247
+ clientName: 'default'
248
+ }];
178
249
  for (const key in this.app.config.instance.instances) {
179
250
  const instanceName = key;
180
251
  const configInstanceBase = this.app.config.instance.instances[instanceName];
181
- if (configInstanceBase === false) continue;
182
- if (!configInstanceBase.isolate) continue;
183
- if (!configInstanceBase.isolateClient) throw new Error(`should specify isolateClient for isolate instance: ${instanceName}`);
184
- await this.prepareDatabase(configInstanceBase.isolateClient, versionStart, instanceName, configInstanceBase);
252
+ if (configInstanceBase === false || !configInstanceBase.isolate) continue;
253
+ if (!configInstanceBase.isolateClient) {
254
+ throw new Error(`should specify isolateClient for isolate instance: ${instanceName}`);
255
+ }
256
+ targets.push({
257
+ clientName: configInstanceBase.isolateClient,
258
+ instanceName,
259
+ configInstanceBase
260
+ });
261
+ }
262
+ return targets;
263
+ }
264
+ __sqliteRoot(client) {
265
+ return client.db.dialectName === 'better-sqlite3' ? resolveVonaLocalPaths(this.app.projectPath, this.app.meta.env.META_MODE, this.app.meta.env.VONA_TEST_RUN_ID).sqliteRoot : undefined;
266
+ }
267
+ async __prepareDatabases(versionStart) {
268
+ for (const target of this.__databaseTargets()) {
269
+ await this.prepareDatabase(target.clientName, versionStart, target.instanceName, target.configInstanceBase);
185
270
  }
186
271
  }
187
272
  async __prepareDatabase(versionStart, instanceName, configInstanceBase) {
@@ -190,36 +275,35 @@ let ServiceDatabase = class ServiceDatabase extends BeanBase {
190
275
  await this.scope.service.version.__start();
191
276
  }
192
277
  }
278
+ __missingDevDatabase(instanceName) {
279
+ // eslint-disable-next-line
280
+ console.error(['', chalk.bgRed.white.bold(' DEVELOPMENT DATABASE MISSING '), chalk.yellow(`Instance: ${instanceName || 'default'}`), '', chalk.bold.yellow('Run this command before starting the development server:'), '', chalk.bold.cyan(' npm run db:reset'), '', chalk.yellow('Warning: db:reset deletes managed development data.'), chalk.yellow('Stop processes using the same database and Redis namespace first.'), ''].join('\n'));
281
+ throw new Error(`Development database is missing for instance "${instanceName || 'default'}". ` + 'Run "npm run db:reset" before starting the development server.');
282
+ }
193
283
  async __prepareDatabaseInner(instanceName, configInstanceBase) {
194
284
  if (this.app.meta.isProd) {
195
285
  // donothing
196
286
  return;
197
287
  }
288
+ if (this.app.meta.isDev) {
289
+ await this.prepareDevDatabases();
290
+ return;
291
+ }
198
292
  const databasePrefix = this.getDatabasePrefix(instanceName, configInstanceBase);
293
+ if (this.app.meta.env.VONA_TEST_RUN_ID) {
294
+ const paths = resolveVonaLocalPaths(this.app.projectPath, this.app.meta.env.META_MODE, this.app.meta.env.VONA_TEST_RUN_ID);
295
+ assertTestRunOwner(paths.dataRoot, paths.runId);
296
+ }
199
297
  // client
200
298
  const client = this.bean.database.current.client;
201
299
  // get current database name
202
- let databaseName = client.getDatabaseName();
203
- const isTestDatabase = databaseName.includes(databasePrefix);
204
- // dev/debug db
205
- if (this.app.meta.isDev) {
206
- // if enable testDatabase
207
- const enableTestDatabase = this.configDatabase.testDatabase;
208
- // check
209
- if (!enableTestDatabase || isTestDatabase) {
210
- // donothing
211
- return;
212
- }
213
- const dbs = await this.__fetchDatabases(client, instanceName, configInstanceBase);
214
- if (dbs.length === 0) {
215
- databaseName = await this.__createDatabase(client, instanceName, configInstanceBase);
216
- } else {
217
- databaseName = dbs[0].name;
218
- }
219
- // set config and reload client
220
- await client.changeConfigConnectionAndReloadWorker(databaseName);
221
- this.$logger.silly(chalk.cyan(`dialect: ${client.db.dialectName}`));
222
- this.$logger.silly(chalk.cyan(`database: ${databaseName}, pid: ${process.pid}`));
300
+ const databaseName = client.getDatabaseName();
301
+ const sqliteRoot = client.db.dialectName === 'better-sqlite3' ? resolveVonaLocalPaths(this.app.projectPath, this.app.meta.env.META_MODE, this.app.meta.env.VONA_TEST_RUN_ID).sqliteRoot : undefined;
302
+ const currentFilename = sqliteRoot ? path.basename(databaseName, '.db') : databaseName;
303
+ const isTestDatabase = currentFilename.startsWith(databasePrefix);
304
+ if (isTestDatabase) assertDisposableDatabaseName(databaseName, databasePrefix, sqliteRoot);
305
+ if (this.app.meta.isTest && this.app.meta.env.VONA_TEST_RUN_ID && currentFilename.startsWith('vona-test-') && !isTestDatabase) {
306
+ throw new Error(`Isolated test database is outside its disposable namespace: ${databaseName}`);
223
307
  }
224
308
  // test db
225
309
  if (this.app.meta.isTest) {
@@ -230,11 +314,15 @@ let ServiceDatabase = class ServiceDatabase extends BeanBase {
230
314
  }
231
315
  // drop old databases
232
316
  const dbs = await this.__fetchDatabases(client, instanceName, configInstanceBase);
317
+ for (const db of dbs) {
318
+ assertDisposableDatabaseName(db.name, databasePrefix, sqliteRoot);
319
+ }
233
320
  for (const db of dbs) {
234
321
  await client.connection.schema.dropDatabase(db.name);
235
322
  }
236
323
  // create database
237
324
  const databaseName = await this.__createDatabase(client, instanceName, configInstanceBase);
325
+ assertDisposableDatabaseName(databaseName, databasePrefix, sqliteRoot);
238
326
  // set config and reload client
239
327
  await client.changeConfigConnectionAndReloadWorker(databaseName);
240
328
  // database ready
@@ -574,5 +662,5 @@ ScopeModuleAVersion = __decorate([Scope(), BeanInfo({
574
662
  })], ScopeModuleAVersion);
575
663
  /** scope: end */
576
664
 
577
- export { $locale, EntityVersion, EntityVersionInit, EntityViewRecord, EventVersionDone, HmrMetaVersion, MetaVersion, ModelVersion, ModelVersionInit, ModelViewRecord, ScopeModuleAVersion, ServiceDatabase, ServiceVersion, StartupDatabaseInit, StartupDatabaseName, StartupInstanceInit, errors, locales };
665
+ export { $locale, EntityVersion, EntityVersionInit, EntityViewRecord, EventVersionDone, HmrMetaVersion, MetaVersion, ModelVersion, ModelVersionInit, ModelViewRecord, ScopeModuleAVersion, ServiceDatabase, ServiceVersion, StartupDatabaseInit, StartupDatabaseName, StartupInstanceInit, assertDisposableDatabaseName, errors, locales };
578
666
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/config/locale/en-us.ts","../src/config/locale/zh-cn.ts","../src/.metadata/locales.ts","../src/entity/version.ts","../src/entity/versionInit.ts","../src/entity/viewRecord.ts","../src/model/version.ts","../src/model/versionInit.ts","../src/model/viewRecord.ts","../src/lib/databaseTestName.ts","../src/service/database.ts","../src/service/version.ts","../src/bean/event.versionDone.ts","../src/bean/hmr.metaVersion.ts","../src/bean/meta.version.ts","../src/bean/startup.databaseInit.ts","../src/bean/startup.databaseName.ts","../src/bean/startup.instanceInit.ts","../src/config/errors.ts","../src/.metadata/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Module","Version","ModuleOld","locales","locale_en_us","locale_zh_cn","$locale","key","args","$makeLocaleMagic","EntityVersion","$Class","omit","EntityBaseSimple","constructor","module","version","__decorate","Api","field","v","title","prototype","Entity","__z_BeanInfo","EntityVersionInit","instanceName","EntityViewRecord","viewName","viewSql","ModelVersion","BeanModelBase","Model","entity","disableInstance","disableDeleted","ModelVersionInit","ModelViewRecord","DATABASE_NAME_MAX_BYTES","APP_NAME_MAX_BYTES","HASH_LENGTH","TIMESTAMP_LENGTH","getDatabaseTestPrefix","appName","scope","readablePrefix","getReadablePrefix","Buffer","byteLength","appHead","truncateUtf8","scopeKind","namespaceHash","hash","createDatabaseTestName","databasePrefix","timestamp","databaseName","Error","slice","length","value","createHash","update","digest","maxBytes","result","bytes","char","charBytes","__separator","__timeFormat","ServiceDatabase","BeanBase","configDatabase","app","config","database","getDatabasePrefix","configInstanceBase","isolate","name","databaseInitStartup","__prepareDatabases","databaseNameStartup","prepareDatabase","clientName","versionStart","bean","switchDb","__prepareDatabase","__fetchDatabases","client","connection","schema","fetchDatabases","__createDatabase","DateTime","now","toFormat","createDatabase","instance","instances","isolateClient","__prepareDatabaseInner","service","__start","meta","isProd","current","getDatabaseName","isTestDatabase","includes","isDev","enableTestDatabase","testDatabase","dbs","changeConfigConnectionAndReloadWorker","$logger","silly","chalk","cyan","db","dialectName","process","pid","isTest","dropDatabase","Service","ServiceVersion","instanceInitStartup","options","instanceBase","__instanceInit","ctx","__check","scene","columns","columnsClear","Object","keys","info","JSON","stringify","err","undefined","optionsInit","assign","__instanceSeed","hasTableVersion","model","hasTable","$table","createTable","table","basicFieldsSimple","deleted","iid","string","integer","modulesArray","$loggerChild","debug","relativeName","__checkModule","executor","newCtx","__done","moduleName","__getModule","fileVersionNew","package","vonaModule","fileVersion","__updateModule","fileVersionOld","res","builder","select","where","orderBy","first","error","throw","__seedModuleTransaction","transaction","__updateModule2","versions","push","__updateModuleTransaction","__initModuleTransaction","beanVersion","__getBeanVersion","insert","init","versionInit","seed","event","versionDone","emit","modules","throwErrorIfEmpty","_getBean","EventVersionDone","BeanEventBase","Event","HmrMetaVersion","reload","_beanOptions","worker","Hmr","MetaVersion","entity2","viewRecord","text","Meta","StartupDatabaseInit","execute","Startup","debounce","StartupDatabaseName","dependencies","StartupInstanceInit","errors","ScopeModuleAVersion","BeanScopeBase","Scope"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/config/locale/en-us.ts","../src/config/locale/zh-cn.ts","../src/.metadata/locales.ts","../src/entity/version.ts","../src/entity/versionInit.ts","../src/entity/viewRecord.ts","../src/model/version.ts","../src/model/versionInit.ts","../src/model/viewRecord.ts","../src/lib/databaseTestName.ts","../src/service/database.ts","../src/service/version.ts","../src/bean/event.versionDone.ts","../src/bean/hmr.metaVersion.ts","../src/bean/meta.version.ts","../src/bean/startup.databaseInit.ts","../src/bean/startup.databaseName.ts","../src/bean/startup.instanceInit.ts","../src/config/errors.ts","../src/.metadata/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Module","Version","ModuleOld","locales","locale_en_us","locale_zh_cn","$locale","key","args","$makeLocaleMagic","EntityVersion","$Class","omit","EntityBaseSimple","constructor","module","version","__decorate","Api","field","v","title","prototype","Entity","__z_BeanInfo","EntityVersionInit","instanceName","EntityViewRecord","viewName","viewSql","ModelVersion","BeanModelBase","Model","entity","disableInstance","disableDeleted","ModelVersionInit","ModelViewRecord","DATABASE_NAME_MAX_BYTES","createDatabaseTestName","databasePrefix","timestamp","databaseName","Buffer","byteLength","Error","__separator","__timeFormat","devDatabasePreparations","WeakMap","assertDisposableDatabaseName","sqliteRoot","filename","path","basename","assertDisposableDatabaseNameCore","isAbsolute","extname","assertIsolatedTestPath","join","ServiceDatabase","BeanBase","configDatabase","app","config","database","getDatabasePrefix","configInstanceBase","scope","isolate","getDatabaseTestPrefix","name","createdInstanceNames","get","createdInstances","consumeCreatedInstance","delete","prepareDevDatabases","reset","process","env","VONA_DB_RESET","meta","isDev","testDatabase","prepared","defaultClient","TypeError","plans","clientNames","Set","target","__databaseTargets","id","clientName","$scope","orm","service","prepareClientNameReal","has","add","push","bean","switchDb","client","current","__sqliteRoot","currentName","getDatabaseName","currentFilename","startsWith","dbs","__fetchDatabases","db","databases","map","create","missing","find","plan","length","__missingDevDatabase","redis","clearAllData","worker","setAlive","preparation","connection","schema","dropDatabase","__createDatabase","changeConfigConnectionAndReloadWorker","$logger","silly","chalk","cyan","dialectName","pid","set","databaseInitStartup","__prepareDatabases","databaseNameStartup","prepareDatabase","versionStart","clientNameReal","clientConfig","clients","withIsolatedTestDatabaseDiscovery","__prepareDatabase","fetchDatabases","DateTime","now","toFormat","createDatabase","targets","instance","instances","isolateClient","resolveVonaLocalPaths","projectPath","META_MODE","VONA_TEST_RUN_ID","undefined","__prepareDatabaseInner","__start","console","error","bgRed","white","bold","yellow","isProd","paths","assertTestRunOwner","dataRoot","runId","isTestDatabase","isTest","Service","ServiceVersion","instanceInitStartup","options","instanceBase","__instanceInit","ctx","result","__check","scene","columns","columnsClear","Object","keys","info","JSON","stringify","err","optionsInit","assign","__instanceSeed","hasTableVersion","model","hasTable","$table","createTable","table","basicFieldsSimple","deleted","iid","string","integer","modulesArray","$loggerChild","debug","relativeName","__checkModule","executor","newCtx","__done","moduleName","__getModule","fileVersionNew","package","vonaModule","fileVersion","includes","__updateModule","fileVersionOld","res","builder","select","where","orderBy","first","throw","__seedModuleTransaction","transaction","__updateModule2","versions","__updateModuleTransaction","__initModuleTransaction","beanVersion","__getBeanVersion","update","insert","init","versionInit","seed","event","versionDone","emit","modules","throwErrorIfEmpty","_getBean","EventVersionDone","BeanEventBase","Event","HmrMetaVersion","reload","_beanOptions","Hmr","MetaVersion","entity2","viewRecord","text","Meta","StartupDatabaseInit","execute","Startup","debounce","StartupDatabaseName","dependencies","StartupInstanceInit","errors","ScopeModuleAVersion","BeanScopeBase","Scope"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- export declare function getDatabaseTestPrefix(appName: string, scope: string): string;
1
+ import { getDatabaseTestPrefix } from 'vona';
2
+ export { getDatabaseTestPrefix };
2
3
  export declare function createDatabaseTestName(databasePrefix: string, timestamp: string): string;
3
4
  //# sourceMappingURL=databaseTestName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"databaseTestName.d.ts","sourceRoot":"","sources":["../../src/lib/databaseTestName.ts"],"names":[],"mappings":"AAOA,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU5E;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMxF"}
1
+ {"version":3,"file":"databaseTestName.d.ts","sourceRoot":"","sources":["../../src/lib/databaseTestName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,MAAM,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAIjC,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMxF"}
@@ -2,16 +2,23 @@ import type { IInstanceRecord } from 'vona';
2
2
  import type { ConfigInstanceBase } from 'vona-module-a-instance';
3
3
  import type { IDatabaseClientRecord } from 'vona-module-a-orm';
4
4
  import { BeanBase } from 'vona';
5
+ export declare function assertDisposableDatabaseName(databaseName: string, databasePrefix: string, sqliteRoot?: string): void;
5
6
  export declare class ServiceDatabase extends BeanBase {
6
7
  get configDatabase(): import("vona-module-a-orm").ConfigDatabase;
7
8
  getDatabasePrefix(instanceName?: keyof IInstanceRecord, configInstanceBase?: ConfigInstanceBase): string;
9
+ get createdInstanceNames(): (keyof IInstanceRecord)[];
10
+ consumeCreatedInstance(instanceName: keyof IInstanceRecord): void;
11
+ prepareDevDatabases(reset?: boolean): Promise<void>;
8
12
  databaseInitStartup(): Promise<void>;
9
13
  databaseNameStartup(): Promise<void>;
10
14
  prepareDatabase(clientName: keyof IDatabaseClientRecord, versionStart: boolean, instanceName?: keyof IInstanceRecord, configInstanceBase?: ConfigInstanceBase): Promise<void>;
11
15
  private __fetchDatabases;
12
16
  private __createDatabase;
17
+ private __databaseTargets;
18
+ private __sqliteRoot;
13
19
  private __prepareDatabases;
14
20
  private __prepareDatabase;
21
+ private __missingDevDatabase;
15
22
  private __prepareDatabaseInner;
16
23
  }
17
24
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/service/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAyB,MAAM,mBAAmB,CAAC;AAItF,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAQhC,qBACa,eAAgB,SAAQ,QAAQ;IAC3C,IAAI,cAAc,+CAEjB;IAEM,iBAAiB,CACtB,YAAY,CAAC,EAAE,MAAM,eAAe,EACpC,kBAAkB,CAAC,EAAE,kBAAkB;IAM5B,mBAAmB;IAKnB,mBAAmB;IAKnB,eAAe,CAC1B,UAAU,EAAE,MAAM,qBAAqB,EACvC,YAAY,EAAE,OAAO,EACrB,YAAY,CAAC,EAAE,MAAM,eAAe,EACpC,kBAAkB,CAAC,EAAE,kBAAkB;YAO3B,gBAAgB;YAShB,gBAAgB;YAahB,kBAAkB;YAoBlB,iBAAiB;YAWjB,sBAAsB;CAuDrC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/service/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,MAAM,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAyB,MAAM,mBAAmB,CAAC;AAKtF,OAAO,EACL,QAAQ,EAMT,MAAM,MAAM,CAAC;AA4Bd,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM,QAUpB;AAED,qBACa,eAAgB,SAAQ,QAAQ;IAC3C,IAAI,cAAc,+CAEjB;IAEM,iBAAiB,CACtB,YAAY,CAAC,EAAE,MAAM,eAAe,EACpC,kBAAkB,CAAC,EAAE,kBAAkB;IAMzC,IAAI,oBAAoB,IAAI,CAAC,MAAM,eAAe,CAAC,EAAE,CAEpD;IAED,sBAAsB,CAAC,YAAY,EAAE,MAAM,eAAe;IAI7C,mBAAmB,CAAC,KAAK,UAAuC;IAgGhE,mBAAmB;IAKnB,mBAAmB;IAKnB,eAAe,CAC1B,UAAU,EAAE,MAAM,qBAAqB,EACvC,YAAY,EAAE,OAAO,EACrB,YAAY,CAAC,EAAE,MAAM,eAAe,EACpC,kBAAkB,CAAC,EAAE,kBAAkB;YAY3B,gBAAgB;YAShB,gBAAgB;IAa9B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,YAAY;YAUN,kBAAkB;YAWlB,iBAAiB;IAW/B,OAAO,CAAC,oBAAoB;YAuBd,sBAAsB;CAuErC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-module-a-version",
3
- "version": "5.1.17",
4
- "gitHead": "63d8821ba6ec94c7aea1a39a1a30b59d85989022",
3
+ "version": "5.1.20",
4
+ "gitHead": "47e1e55106b7c76f6545c8ba474f23d9be830453",
5
5
  "description": "vona-module-a-version",
6
6
  "keywords": [
7
7
  "a-version",
@@ -1,21 +1,8 @@
1
- import { createHash } from 'node:crypto';
1
+ import { getDatabaseTestPrefix } from 'vona';
2
2
 
3
- const DATABASE_NAME_MAX_BYTES = 63;
4
- const APP_NAME_MAX_BYTES = 13;
5
- const HASH_LENGTH = 10;
6
- const TIMESTAMP_LENGTH = 15;
7
-
8
- export function getDatabaseTestPrefix(appName: string, scope: string): string {
9
- const readablePrefix = getReadablePrefix(appName, scope);
10
- if (Buffer.byteLength(readablePrefix, 'utf8') + TIMESTAMP_LENGTH <= DATABASE_NAME_MAX_BYTES) {
11
- return readablePrefix;
12
- }
3
+ export { getDatabaseTestPrefix };
13
4
 
14
- const appHead = truncateUtf8(appName, APP_NAME_MAX_BYTES);
15
- const scopeKind = scope === 'share' ? 's' : 'i';
16
- const namespaceHash = hash(`${appName}\0${scope}`);
17
- return `vona-test-${appHead}-${scopeKind}-${namespaceHash}-`;
18
- }
5
+ const DATABASE_NAME_MAX_BYTES = 63;
19
6
 
20
7
  export function createDatabaseTestName(databasePrefix: string, timestamp: string): string {
21
8
  const databaseName = `${databasePrefix}${timestamp}`;
@@ -24,24 +11,3 @@ export function createDatabaseTestName(databasePrefix: string, timestamp: string
24
11
  }
25
12
  return databaseName;
26
13
  }
27
-
28
- function getReadablePrefix(appName: string, scope: string): string {
29
- if (scope === 'share') return `vona-test-${appName}-s-`;
30
- return `vona-test-${appName}-i-${scope.slice('isolate-'.length)}-`;
31
- }
32
-
33
- function hash(value: string): string {
34
- return createHash('sha256').update(value).digest('base64url').slice(0, HASH_LENGTH);
35
- }
36
-
37
- function truncateUtf8(value: string, maxBytes: number): string {
38
- let result = '';
39
- let bytes = 0;
40
- for (const char of value) {
41
- const charBytes = Buffer.byteLength(char, 'utf8');
42
- if (bytes + charBytes > maxBytes) break;
43
- result += char;
44
- bytes += charBytes;
45
- }
46
- return result;
47
- }
@@ -1,10 +1,18 @@
1
- import type { IInstanceRecord } from 'vona';
1
+ import type { IInstanceRecord, VonaApplication } from 'vona';
2
2
  import type { ConfigInstanceBase } from 'vona-module-a-instance';
3
3
  import type { IDatabaseClientRecord, ServiceDatabaseClient } from 'vona-module-a-orm';
4
4
 
5
5
  import chalk from 'chalk';
6
6
  import { DateTime } from 'luxon';
7
- import { BeanBase } from 'vona';
7
+ import path from 'node:path';
8
+ import {
9
+ BeanBase,
10
+ assertDisposableDatabaseName as assertDisposableDatabaseNameCore,
11
+ assertIsolatedTestPath,
12
+ assertTestRunOwner,
13
+ resolveVonaLocalPaths,
14
+ withIsolatedTestDatabaseDiscovery,
15
+ } from 'vona';
8
16
  import { Service } from 'vona-module-a-bean';
9
17
 
10
18
  import { createDatabaseTestName, getDatabaseTestPrefix } from '../lib/databaseTestName.ts';
@@ -12,6 +20,41 @@ import { createDatabaseTestName, getDatabaseTestPrefix } from '../lib/databaseTe
12
20
  const __separator = '-';
13
21
  const __timeFormat = `yyyyMMdd${__separator}HHmmss`;
14
22
 
23
+ interface IDevDatabaseTarget {
24
+ clientName: keyof IDatabaseClientRecord;
25
+ instanceName?: keyof IInstanceRecord;
26
+ configInstanceBase?: ConfigInstanceBase;
27
+ }
28
+
29
+ interface IDevDatabasePlan extends IDevDatabaseTarget {
30
+ databasePrefix: string;
31
+ sqliteRoot?: string;
32
+ databases: string[];
33
+ create: boolean;
34
+ }
35
+
36
+ interface IDevDatabasePreparation {
37
+ prepared: boolean;
38
+ createdInstances: Set<keyof IInstanceRecord>;
39
+ }
40
+
41
+ const devDatabasePreparations = new WeakMap<VonaApplication, IDevDatabasePreparation>();
42
+
43
+ export function assertDisposableDatabaseName(
44
+ databaseName: string,
45
+ databasePrefix: string,
46
+ sqliteRoot?: string,
47
+ ) {
48
+ const filename = sqliteRoot ? path.basename(databaseName, '.db') : databaseName;
49
+ assertDisposableDatabaseNameCore(filename, databasePrefix);
50
+ if (sqliteRoot) {
51
+ if (!path.isAbsolute(databaseName) || path.extname(databaseName) !== '.db') {
52
+ throw new Error(`Database is outside the disposable SQLite directory: ${databaseName}`);
53
+ }
54
+ assertIsolatedTestPath(databaseName, path.join(sqliteRoot, `${filename}.db`));
55
+ }
56
+ }
57
+
15
58
  @Service()
16
59
  export class ServiceDatabase extends BeanBase {
17
60
  get configDatabase() {
@@ -26,6 +69,110 @@ export class ServiceDatabase extends BeanBase {
26
69
  return getDatabaseTestPrefix(this.app.name, scope);
27
70
  }
28
71
 
72
+ get createdInstanceNames(): (keyof IInstanceRecord)[] {
73
+ return [...(devDatabasePreparations.get(this.app)?.createdInstances ?? [])];
74
+ }
75
+
76
+ consumeCreatedInstance(instanceName: keyof IInstanceRecord) {
77
+ devDatabasePreparations.get(this.app)?.createdInstances.delete(instanceName);
78
+ }
79
+
80
+ public async prepareDevDatabases(reset = process.env.VONA_DB_RESET === 'true') {
81
+ if (!this.app.meta.isDev) return;
82
+ if (!this.configDatabase.testDatabase) {
83
+ if (reset) {
84
+ throw new Error('db:reset requires database.testDatabase=true in the dev configuration');
85
+ }
86
+ return;
87
+ }
88
+ if (devDatabasePreparations.get(this.app)?.prepared) return;
89
+
90
+ if (typeof this.configDatabase.defaultClient !== 'string') {
91
+ throw new TypeError('Disposable dev database preparation requires a static default client');
92
+ }
93
+ // Validate every target before clearing any application resources.
94
+ const plans: IDevDatabasePlan[] = [];
95
+ const clientNames = new Set<keyof IDatabaseClientRecord>();
96
+ for (const target of this.__databaseTargets()) {
97
+ if (target.configInstanceBase?.isolate && !target.configInstanceBase.id) {
98
+ throw new Error(`should specify id for isolate instance: ${target.instanceName}`);
99
+ }
100
+ const clientName = this.$scope.orm.service.database.prepareClientNameReal(target.clientName);
101
+ if (clientNames.has(clientName)) {
102
+ throw new Error(`Disposable database targets must use distinct clients: ${clientName}`);
103
+ }
104
+ clientNames.add(clientName);
105
+ plans.push(
106
+ await this.bean.database.switchDb(async () => {
107
+ const client = this.bean.database.current.client;
108
+ const databasePrefix = this.getDatabasePrefix(
109
+ target.instanceName,
110
+ target.configInstanceBase,
111
+ );
112
+ const sqliteRoot = this.__sqliteRoot(client);
113
+ const currentName = client.getDatabaseName();
114
+ const currentFilename = sqliteRoot ? path.basename(currentName, '.db') : currentName;
115
+ if (currentFilename.startsWith(databasePrefix)) {
116
+ assertDisposableDatabaseName(currentName, databasePrefix, sqliteRoot);
117
+ if (reset) {
118
+ throw new Error('db:reset requires a connection outside the disposable database');
119
+ }
120
+ }
121
+ const dbs = await this.__fetchDatabases(
122
+ client,
123
+ target.instanceName,
124
+ target.configInstanceBase,
125
+ );
126
+ for (const db of dbs) {
127
+ assertDisposableDatabaseName(db.name, databasePrefix, sqliteRoot);
128
+ }
129
+ return {
130
+ ...target,
131
+ databasePrefix,
132
+ sqliteRoot,
133
+ databases: dbs.map(db => db.name),
134
+ create: reset,
135
+ };
136
+ }, target.clientName),
137
+ );
138
+ }
139
+
140
+ if (!reset) {
141
+ const missing = plans.find(plan => plan.databases.length === 0);
142
+ if (missing) this.__missingDevDatabase(missing.instanceName);
143
+ }
144
+
145
+ if (reset) {
146
+ await this.$scope.redis.service.redis.clearAllData();
147
+ await this.bean.worker.setAlive();
148
+ }
149
+ const preparation: IDevDatabasePreparation = {
150
+ prepared: false,
151
+ createdInstances: new Set(),
152
+ };
153
+ for (const plan of plans) {
154
+ await this.bean.database.switchDb(async () => {
155
+ const client = this.bean.database.current.client;
156
+ if (reset) {
157
+ for (const databaseName of plan.databases) {
158
+ assertDisposableDatabaseName(databaseName, plan.databasePrefix, plan.sqliteRoot);
159
+ await client.connection.schema.dropDatabase(databaseName);
160
+ }
161
+ }
162
+ const databaseName = plan.create
163
+ ? await this.__createDatabase(client, plan.instanceName, plan.configInstanceBase)
164
+ : plan.databases[0];
165
+ assertDisposableDatabaseName(databaseName, plan.databasePrefix, plan.sqliteRoot);
166
+ await client.changeConfigConnectionAndReloadWorker(databaseName);
167
+ if (plan.create) preparation.createdInstances.add(plan.instanceName ?? '');
168
+ this.$logger.silly(chalk.cyan(`dialect: ${client.db.dialectName}`));
169
+ this.$logger.silly(chalk.cyan(`database: ${databaseName}, pid: ${process.pid}`));
170
+ }, plan.clientName);
171
+ }
172
+ preparation.prepared = true;
173
+ devDatabasePreparations.set(this.app, preparation);
174
+ }
175
+
29
176
  public async databaseInitStartup() {
30
177
  // database
31
178
  await this.__prepareDatabases(true);
@@ -42,9 +189,14 @@ export class ServiceDatabase extends BeanBase {
42
189
  instanceName?: keyof IInstanceRecord,
43
190
  configInstanceBase?: ConfigInstanceBase,
44
191
  ) {
45
- await this.bean.database.switchDb(async () => {
46
- await this.__prepareDatabase(versionStart, instanceName, configInstanceBase);
47
- }, clientName);
192
+ const clientNameReal =
193
+ clientName === 'default' ? (this.configDatabase.defaultClient as string) : clientName;
194
+ const clientConfig = this.configDatabase.clients[clientNameReal];
195
+ await withIsolatedTestDatabaseDiscovery(this.app, clientNameReal, clientConfig, async () => {
196
+ await this.bean.database.switchDb(async () => {
197
+ await this.__prepareDatabase(versionStart, instanceName, configInstanceBase);
198
+ }, clientName);
199
+ });
48
200
  }
49
201
 
50
202
  private async __fetchDatabases(
@@ -69,22 +221,41 @@ export class ServiceDatabase extends BeanBase {
69
221
  return await client.connection.schema.createDatabase(databaseName);
70
222
  }
71
223
 
72
- private async __prepareDatabases(versionStart: boolean) {
73
- // default
74
- await this.prepareDatabase('default', versionStart);
75
- // isolate
224
+ private __databaseTargets(): IDevDatabaseTarget[] {
225
+ const targets: IDevDatabaseTarget[] = [{ clientName: 'default' }];
76
226
  for (const key in this.app.config.instance.instances) {
77
227
  const instanceName = key as keyof IInstanceRecord;
78
228
  const configInstanceBase = this.app.config.instance.instances[instanceName];
79
- if (configInstanceBase === false) continue;
80
- if (!configInstanceBase.isolate) continue;
81
- if (!configInstanceBase.isolateClient)
229
+ if (configInstanceBase === false || !configInstanceBase.isolate) continue;
230
+ if (!configInstanceBase.isolateClient) {
82
231
  throw new Error(`should specify isolateClient for isolate instance: ${instanceName}`);
83
- await this.prepareDatabase(
84
- configInstanceBase.isolateClient,
85
- versionStart,
232
+ }
233
+ targets.push({
234
+ clientName: configInstanceBase.isolateClient,
86
235
  instanceName,
87
236
  configInstanceBase,
237
+ });
238
+ }
239
+ return targets;
240
+ }
241
+
242
+ private __sqliteRoot(client: ServiceDatabaseClient) {
243
+ return client.db.dialectName === 'better-sqlite3'
244
+ ? resolveVonaLocalPaths(
245
+ this.app.projectPath,
246
+ this.app.meta.env.META_MODE,
247
+ this.app.meta.env.VONA_TEST_RUN_ID,
248
+ ).sqliteRoot
249
+ : undefined;
250
+ }
251
+
252
+ private async __prepareDatabases(versionStart: boolean) {
253
+ for (const target of this.__databaseTargets()) {
254
+ await this.prepareDatabase(
255
+ target.clientName,
256
+ versionStart,
257
+ target.instanceName,
258
+ target.configInstanceBase,
88
259
  );
89
260
  }
90
261
  }
@@ -100,6 +271,29 @@ export class ServiceDatabase extends BeanBase {
100
271
  }
101
272
  }
102
273
 
274
+ private __missingDevDatabase(instanceName?: keyof IInstanceRecord): never {
275
+ // eslint-disable-next-line
276
+ console.error(
277
+ [
278
+ '',
279
+ chalk.bgRed.white.bold(' DEVELOPMENT DATABASE MISSING '),
280
+ chalk.yellow(`Instance: ${instanceName || 'default'}`),
281
+ '',
282
+ chalk.bold.yellow('Run this command before starting the development server:'),
283
+ '',
284
+ chalk.bold.cyan(' npm run db:reset'),
285
+ '',
286
+ chalk.yellow('Warning: db:reset deletes managed development data.'),
287
+ chalk.yellow('Stop processes using the same database and Redis namespace first.'),
288
+ '',
289
+ ].join('\n'),
290
+ );
291
+ throw new Error(
292
+ `Development database is missing for instance "${instanceName || 'default'}". ` +
293
+ 'Run "npm run db:reset" before starting the development server.',
294
+ );
295
+ }
296
+
103
297
  private async __prepareDatabaseInner(
104
298
  instanceName?: keyof IInstanceRecord,
105
299
  configInstanceBase?: ConfigInstanceBase,
@@ -108,31 +302,43 @@ export class ServiceDatabase extends BeanBase {
108
302
  // donothing
109
303
  return;
110
304
  }
305
+ if (this.app.meta.isDev) {
306
+ await this.prepareDevDatabases();
307
+ return;
308
+ }
111
309
  const databasePrefix = this.getDatabasePrefix(instanceName, configInstanceBase);
310
+ if (this.app.meta.env.VONA_TEST_RUN_ID) {
311
+ const paths = resolveVonaLocalPaths(
312
+ this.app.projectPath,
313
+ this.app.meta.env.META_MODE,
314
+ this.app.meta.env.VONA_TEST_RUN_ID,
315
+ );
316
+ assertTestRunOwner(paths.dataRoot, paths.runId!);
317
+ }
112
318
  // client
113
319
  const client = this.bean.database.current.client;
114
320
  // get current database name
115
- let databaseName = client.getDatabaseName();
116
- const isTestDatabase = databaseName.includes(databasePrefix);
117
- // dev/debug db
118
- if (this.app.meta.isDev) {
119
- // if enable testDatabase
120
- const enableTestDatabase = this.configDatabase.testDatabase;
121
- // check
122
- if (!enableTestDatabase || isTestDatabase) {
123
- // donothing
124
- return;
125
- }
126
- const dbs = await this.__fetchDatabases(client, instanceName, configInstanceBase);
127
- if (dbs.length === 0) {
128
- databaseName = await this.__createDatabase(client, instanceName, configInstanceBase);
129
- } else {
130
- databaseName = dbs[0].name;
131
- }
132
- // set config and reload client
133
- await client.changeConfigConnectionAndReloadWorker(databaseName);
134
- this.$logger.silly(chalk.cyan(`dialect: ${client.db.dialectName}`));
135
- this.$logger.silly(chalk.cyan(`database: ${databaseName}, pid: ${process.pid}`));
321
+ const databaseName = client.getDatabaseName();
322
+ const sqliteRoot =
323
+ client.db.dialectName === 'better-sqlite3'
324
+ ? resolveVonaLocalPaths(
325
+ this.app.projectPath,
326
+ this.app.meta.env.META_MODE,
327
+ this.app.meta.env.VONA_TEST_RUN_ID,
328
+ ).sqliteRoot
329
+ : undefined;
330
+ const currentFilename = sqliteRoot ? path.basename(databaseName, '.db') : databaseName;
331
+ const isTestDatabase = currentFilename.startsWith(databasePrefix);
332
+ if (isTestDatabase) assertDisposableDatabaseName(databaseName, databasePrefix, sqliteRoot);
333
+ if (
334
+ this.app.meta.isTest &&
335
+ this.app.meta.env.VONA_TEST_RUN_ID &&
336
+ currentFilename.startsWith('vona-test-') &&
337
+ !isTestDatabase
338
+ ) {
339
+ throw new Error(
340
+ `Isolated test database is outside its disposable namespace: ${databaseName}`,
341
+ );
136
342
  }
137
343
  // test db
138
344
  if (this.app.meta.isTest) {
@@ -143,11 +349,15 @@ export class ServiceDatabase extends BeanBase {
143
349
  }
144
350
  // drop old databases
145
351
  const dbs = await this.__fetchDatabases(client, instanceName, configInstanceBase);
352
+ for (const db of dbs) {
353
+ assertDisposableDatabaseName(db.name, databasePrefix, sqliteRoot);
354
+ }
146
355
  for (const db of dbs) {
147
356
  await client.connection.schema.dropDatabase(db.name);
148
357
  }
149
358
  // create database
150
359
  const databaseName = await this.__createDatabase(client, instanceName, configInstanceBase);
360
+ assertDisposableDatabaseName(databaseName, databasePrefix, sqliteRoot);
151
361
  // set config and reload client
152
362
  await client.changeConfigConnectionAndReloadWorker(databaseName);
153
363
  // database ready