Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 40fe362489 |
@@ -2,6 +2,7 @@ import path from 'node:path';
|
||||
import { createDbPool, isDatabaseConfigured } from './db.mjs';
|
||||
import { projectRoot } from './load-env.mjs';
|
||||
import { importMemind, resolveMemindLib } from './lib-path.mjs';
|
||||
import { initializePersonalMemoryCandidateStore } from './personal-memory-candidate-store.mjs';
|
||||
import { createSystemTestAccountService, ensureSystemTestAccountSchema } from './system-test-accounts.mjs';
|
||||
|
||||
export async function bootstrapAdminServices() {
|
||||
@@ -30,7 +31,6 @@ export async function bootstrapAdminServices() {
|
||||
} = await importMemind('mindspace-config.mjs');
|
||||
const { createMemoryV2AdminConfigService } = await importMemind('memory-v2-admin-config.mjs');
|
||||
const { createMindSearchConfigService } = await importMemind('mindsearch-config.mjs');
|
||||
const { createPersonalMemoryCandidateStore } = await importMemind('memory-v2-personal-store.mjs');
|
||||
const { createSkillRuntimeAdminConfigService } = await importMemind('skill-runtime-admin-config.mjs');
|
||||
const { createAssetGatewayConfigService } = await importMemind('asset-gateway.mjs');
|
||||
const { createImageMakeAdminConfigService } = await importMemind('image-make-admin-config.mjs');
|
||||
@@ -104,7 +104,7 @@ export async function bootstrapAdminServices() {
|
||||
});
|
||||
const mindSearchConfigService = createMindSearchConfigService(pool, { env: process.env });
|
||||
await mindSearchConfigService.ensureSchema();
|
||||
const personalMemoryCandidateStore = createPersonalMemoryCandidateStore(pool);
|
||||
const personalMemoryCandidateStore = await initializePersonalMemoryCandidateStore(pool);
|
||||
const skillRuntimeConfigService = createSkillRuntimeAdminConfigService(pool, {
|
||||
env: process.env,
|
||||
h5Root,
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import { importMemind } from './lib-path.mjs';
|
||||
|
||||
export async function initializePersonalMemoryCandidateStore(
|
||||
pool,
|
||||
{ importMemindModule = importMemind } = {},
|
||||
) {
|
||||
const {
|
||||
createPersonalMemoryCandidateStore,
|
||||
ensurePersonalMemoryCandidateSchema,
|
||||
} = await importMemindModule('memory-v2-personal-store.mjs');
|
||||
|
||||
await ensurePersonalMemoryCandidateSchema(pool);
|
||||
return createPersonalMemoryCandidateStore(pool);
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { initializePersonalMemoryCandidateStore } from './personal-memory-candidate-store.mjs';
|
||||
|
||||
test('admin initializes the candidate schema before creating its store', async () => {
|
||||
const calls = [];
|
||||
const pool = { query() {} };
|
||||
const store = { listCandidates() {} };
|
||||
|
||||
const result = await initializePersonalMemoryCandidateStore(pool, {
|
||||
async importMemindModule(subpath) {
|
||||
assert.equal(subpath, 'memory-v2-personal-store.mjs');
|
||||
return {
|
||||
async ensurePersonalMemoryCandidateSchema(receivedPool) {
|
||||
assert.equal(receivedPool, pool);
|
||||
calls.push('ensure');
|
||||
},
|
||||
createPersonalMemoryCandidateStore(receivedPool) {
|
||||
assert.equal(receivedPool, pool);
|
||||
calls.push('create');
|
||||
return store;
|
||||
},
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
assert.equal(result, store);
|
||||
assert.deepEqual(calls, ['ensure', 'create']);
|
||||
});
|
||||
|
||||
test('admin fails bootstrap when the candidate schema cannot be initialized', async () => {
|
||||
await assert.rejects(
|
||||
initializePersonalMemoryCandidateStore({}, {
|
||||
async importMemindModule() {
|
||||
return {
|
||||
async ensurePersonalMemoryCandidateSchema() {
|
||||
throw new Error('candidate ddl failed');
|
||||
},
|
||||
createPersonalMemoryCandidateStore() {
|
||||
throw new Error('store must not be created');
|
||||
},
|
||||
};
|
||||
},
|
||||
}),
|
||||
/candidate ddl failed/,
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user