@@ -105,25 +105,39 @@ export class MetadataPlugin implements Plugin {
105105 } ) ;
106106
107107 // Bridge database driver from kernel service registry to MetadataManager.
108- // DriverPlugin registers drivers as 'driver.{name}' services during init().
109- // This runs AFTER filesystem loading so that system metadata populated via
110- // register() above is stored in-memory only, without being persisted to the
111- // database (which would create noisy DB state/history on every cold boot).
108+ // Uses ObjectQL engine's datasource mapping to resolve the correct driver
109+ // for sys_metadata (respects namespace → datasource routing).
112110 try {
113- const services = ctx . getServices ( ) ;
114- for ( const [ serviceName , service ] of services ) {
115- if ( serviceName . startsWith ( 'driver.' ) && service ) {
116- ctx . logger . info ( '[MetadataPlugin] Bridging driver to MetadataManager for database-backed persistence' , {
117- driverService : serviceName ,
111+ const ql = ctx . getService < any > ( 'objectql' ) ;
112+ if ( ql ) {
113+ const tableName = this . manager [ 'config' ] ?. tableName ?? 'sys_metadata' ;
114+ const driver = ql . getDriverForObject ?.( tableName ) ;
115+ if ( driver ) {
116+ ctx . logger . info ( '[MetadataPlugin] Bridging driver to MetadataManager via ObjectQL routing' , {
117+ tableName,
118+ driver : driver . name ,
118119 } ) ;
119- this . manager . setDatabaseDriver ( service ) ;
120- break ; // Use the first discovered driver — typically only one driver is registered per deployment
120+ this . manager . setDatabaseDriver ( driver ) ;
121+ } else {
122+ ctx . logger . debug ( '[MetadataPlugin] ObjectQL could not resolve driver for metadata table' , { tableName } ) ;
121123 }
122124 }
123- } catch ( e : any ) {
124- ctx . logger . debug ( '[MetadataPlugin] No driver service found — database metadata persistence not available' , {
125- error : e . message ,
126- } ) ;
125+ } catch {
126+ // ObjectQL not available — fall back to first available driver service
127+ try {
128+ const services = ctx . getServices ( ) ;
129+ for ( const [ serviceName , service ] of services ) {
130+ if ( serviceName . startsWith ( 'driver.' ) && service ) {
131+ ctx . logger . info ( '[MetadataPlugin] Bridging driver to MetadataManager (fallback: first driver)' , {
132+ driverService : serviceName ,
133+ } ) ;
134+ this . manager . setDatabaseDriver ( service ) ;
135+ break ;
136+ }
137+ }
138+ } catch ( e : any ) {
139+ ctx . logger . debug ( '[MetadataPlugin] No driver service found' , { error : e . message } ) ;
140+ }
127141 }
128142
129143 // Bridge realtime service from kernel service registry to MetadataManager.
0 commit comments