1313import { ObjectKernel , DriverPlugin , AppPlugin } from '@objectstack/runtime' ;
1414import { ObjectQLPlugin } from '@objectstack/objectql' ;
1515import { TursoDriver } from '@objectstack/driver-turso' ;
16+ import { InMemoryDriver } from '@objectstack/driver-memory' ;
1617import { createHonoApp } from '@objectstack/hono' ;
1718import { AuthPlugin } from '@objectstack/plugin-auth' ;
1819import { 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