1111 */
1212
1313import { ObjectKernel , DriverPlugin , AppPlugin } from '@objectstack/runtime' ;
14- import { ObjectQLPlugin } from '@objectstack/objectql' ;
14+ import { ObjectQLPlugin , ObjectQL } 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,7 @@ 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' ) ) ;
8085
8186 // Load app manifests (BEFORE plugins that need object schemas)
8287 await kernel . use ( new AppPlugin ( CrmApp ) ) ;
@@ -112,6 +117,18 @@ async function ensureKernel(): Promise<ObjectKernel> {
112117
113118 await kernel . bootstrap ( ) ;
114119
120+ // Configure datasource mapping AFTER bootstrap (ObjectQL service is registered during init)
121+ const ql = await kernel . getServiceAsync < ObjectQL > ( 'objectql' ) ;
122+ if ( ql && typeof ql . setDatasourceMapping === 'function' ) {
123+ ql . setDatasourceMapping ( [
124+ // System objects (sys namespace) use Turso for persistent storage
125+ { namespace : 'sys' , datasource : 'turso' } ,
126+ // All other objects use Memory driver as default
127+ { default : true , datasource : 'memory' } ,
128+ ] ) ;
129+ console . log ( '[Vercel] Datasource mapping configured: sys → turso, default → memory' ) ;
130+ }
131+
115132 _kernel = kernel ;
116133 console . log ( '[Vercel] Kernel ready.' ) ;
117134 return kernel ;
@@ -249,6 +266,5 @@ export default getRequestListener(async (request, env) => {
249266 * Vercel per-function configuration.
250267 */
251268export const config = {
252- memory : 1024 ,
253269 maxDuration : 60 ,
254270} ;
0 commit comments