@@ -31,6 +31,7 @@ import { ValidatorPlugin } from '@objectql/plugin-validator';
3131import { FormulaPlugin } from '@objectql/plugin-formula' ;
3232import { createApiRegistryPlugin } from '@objectstack/core' ;
3333import { MemoryDriver } from '@objectql/driver-memory' ;
34+ import { createTursoDriver } from '@objectql/driver-turso' ;
3435import * as fs from 'fs' ;
3536import * as yaml from 'js-yaml' ;
3637
@@ -58,9 +59,32 @@ function loadObjects(dir: string) {
5859
5960const projectTrackerDir = path . join ( __dirname , 'examples/showcase/project-tracker/src' ) ;
6061
62+ // Choose driver based on environment — Turso when TURSO_DATABASE_URL is set,
63+ // MemoryDriver otherwise (zero-config fallback for quick starts).
64+ function createDefaultDriver ( ) {
65+ const tursoUrl = process . env . TURSO_DATABASE_URL ;
66+ if ( tursoUrl ) {
67+ console . log ( `🗄️ Driver: Turso (${ tursoUrl } )` ) ;
68+ const syncUrl = process . env . TURSO_SYNC_URL ;
69+ return createTursoDriver ( {
70+ url : tursoUrl ,
71+ authToken : process . env . TURSO_AUTH_TOKEN ,
72+ syncUrl,
73+ sync : syncUrl
74+ ? {
75+ intervalSeconds : Number ( process . env . TURSO_SYNC_INTERVAL ) || 60 ,
76+ onConnect : true ,
77+ }
78+ : undefined ,
79+ } ) ;
80+ }
81+ console . log ( '🗄️ Driver: Memory (in-memory, non-persistent)' ) ;
82+ return new MemoryDriver ( ) ;
83+ }
84+
6185// Shared driver instance — registered as 'driver.default' service for
6286// upstream ObjectQLPlugin discovery and passed to QueryPlugin for query execution.
63- const defaultDriver = new MemoryDriver ( ) ;
87+ const defaultDriver = createDefaultDriver ( ) ;
6488
6589export default {
6690 metadata : {
@@ -73,14 +97,19 @@ export default {
7397 createApiRegistryPlugin ( ) ,
7498 new HonoServerPlugin ( { } ) ,
7599 new ConsolePlugin ( ) ,
76- // Register MemoryDriver as 'driver.default' service so upstream
100+ // Register the active driver as 'driver.default' service so upstream
77101 // ObjectQLPlugin can discover it during start() phase.
78102 {
79- name : 'driver-memory ' ,
103+ name : 'driver-default ' ,
80104 init : async ( ctx : any ) => {
81105 ctx . registerService ( 'driver.default' , defaultDriver ) ;
82106 } ,
83- start : async ( ) => { } ,
107+ start : async ( ) => {
108+ // Connect Turso driver if applicable (MemoryDriver has no connect method)
109+ if ( 'connect' in defaultDriver && typeof ( defaultDriver as { connect : ( ) => Promise < void > } ) . connect === 'function' ) {
110+ await ( defaultDriver as { connect : ( ) => Promise < void > } ) . connect ( ) ;
111+ }
112+ } ,
84113 } ,
85114 // Upstream ObjectQLPlugin from @objectstack /objectql:
86115 // - Registers objectql, metadata, data, protocol services
0 commit comments