Skip to content

Commit adf39b7

Browse files
Claudehotlong
andauthored
feat: configure dual-driver setup for Vercel - Turso for sys namespace, Memory for apps
Agent-Logs-Url: https://github.com/objectstack-ai/framework/sessions/b0cabda0-dbb2-41c2-8ae6-47f8e3e6cabc Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 72d34af commit adf39b7

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

apps/server/server/index.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import { ObjectKernel, DriverPlugin, AppPlugin } from '@objectstack/runtime';
1414
import { ObjectQLPlugin } from '@objectstack/objectql';
1515
import { TursoDriver } from '@objectstack/driver-turso';
16+
import { InMemoryDriver } from '@objectstack/driver-memory';
1617
import { createHonoApp } from '@objectstack/hono';
1718
import { AuthPlugin } from '@objectstack/plugin-auth';
1819
import { SecurityPlugin } from '@objectstack/plugin-security';
@@ -62,7 +63,11 @@ async function ensureKernel(): Promise<ObjectKernel> {
6263
// Register ObjectQL engine
6364
await kernel.use(new ObjectQLPlugin());
6465

65-
// Database driver - Turso (remote mode for Vercel)
66+
// Register Memory driver (default for CRM, Todo, BI apps)
67+
const memoryDriver = new InMemoryDriver();
68+
await kernel.use(new DriverPlugin(memoryDriver, 'memory'));
69+
70+
// Register Turso driver (for sys namespace)
6671
const tursoUrl = process.env.TURSO_DATABASE_URL;
6772
const tursoToken = process.env.TURSO_AUTH_TOKEN;
6873

@@ -76,7 +81,19 @@ async function ensureKernel(): Promise<ObjectKernel> {
7681
// Remote mode - no local sync needed for Vercel
7782
});
7883

79-
await kernel.use(new DriverPlugin(tursoDriver));
84+
await kernel.use(new DriverPlugin(tursoDriver, 'turso'));
85+
86+
// Configure datasource mapping: sys namespace → Turso, everything else → Memory
87+
const ql = kernel.getService('objectql');
88+
if (ql && typeof ql.setDatasourceMapping === 'function') {
89+
ql.setDatasourceMapping([
90+
// System objects (sys namespace) use Turso for persistent storage
91+
{ namespace: 'sys', datasource: 'turso' },
92+
// All other objects use Memory driver as default
93+
{ default: true, datasource: 'memory' },
94+
]);
95+
console.log('[Vercel] Datasource mapping configured: sys → turso, default → memory');
96+
}
8097

8198
// Load app manifests (BEFORE plugins that need object schemas)
8299
await kernel.use(new AppPlugin(CrmApp));

0 commit comments

Comments
 (0)