11// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
22
33import { ObjectQL } from './engine.js' ;
4- import { MetadataFacade } from './metadata-facade.js' ;
54import { ObjectStackProtocolImplementation } from './protocol.js' ;
65import { Plugin , PluginContext } from '@objectstack/core' ;
76
@@ -33,40 +32,7 @@ export class ObjectQLPlugin implements Plugin {
3332
3433 // Register as provider for Core Kernel Services
3534 ctx . registerService ( 'objectql' , this . ql ) ;
36-
37- // Register MetadataFacade as metadata service (unless external service exists)
38- let hasMetadata = false ;
39- let metadataProvider = 'objectql' ;
40- try {
41- if ( ctx . getService ( 'metadata' ) ) {
42- hasMetadata = true ;
43- metadataProvider = 'external' ;
44- }
45- } catch ( e : any ) {
46- // Ignore errors during check (e.g. "Service is async")
47- }
4835
49- if ( ! hasMetadata ) {
50- try {
51- const metadataFacade = new MetadataFacade ( ) ;
52- ctx . registerService ( 'metadata' , metadataFacade ) ;
53- ctx . logger . info ( 'MetadataFacade registered as metadata service' , {
54- mode : 'in-memory' ,
55- features : [ 'registry' , 'fast-lookup' ]
56- } ) ;
57- } catch ( e : any ) {
58- // Ignore if already registered (race condition or async mis-detection)
59- if ( ! e . message ?. includes ( 'already registered' ) ) {
60- throw e ;
61- }
62- }
63- } else {
64- ctx . logger . info ( 'External metadata service detected' , {
65- provider : metadataProvider ,
66- mode : 'will-sync-in-start-phase'
67- } ) ;
68- }
69-
7036 ctx . registerService ( 'data' , this . ql ) ; // ObjectQL implements IDataEngine
7137
7238 // Register manifest service for direct app/package registration.
@@ -84,7 +50,6 @@ export class ObjectQLPlugin implements Plugin {
8450
8551 ctx . logger . info ( 'ObjectQL engine registered' , {
8652 services : [ 'objectql' , 'data' , 'manifest' ] ,
87- metadataProvider : metadataProvider
8853 } ) ;
8954
9055 // Register Protocol Implementation
@@ -99,16 +64,14 @@ export class ObjectQLPlugin implements Plugin {
9964
10065 start = async ( ctx : PluginContext ) => {
10166 ctx . logger . info ( 'ObjectQL engine starting...' ) ;
102-
103- // Check if we should load from external metadata service
67+
68+ // Sync from external metadata service (e.g. MetadataPlugin) if available
10469 try {
10570 const metadataService = ctx . getService ( 'metadata' ) as any ;
106- // Only sync if metadata service is external (not our own MetadataFacade)
107- if ( metadataService && ! ( metadataService instanceof MetadataFacade ) && this . ql ) {
71+ if ( metadataService && typeof metadataService . loadMany === 'function' && this . ql ) {
10872 await this . loadMetadataFromService ( metadataService , ctx ) ;
10973 }
11074 } catch ( e : any ) {
111- // No external metadata service or error accessing it
11275 ctx . logger . debug ( 'No external metadata service to sync from' ) ;
11376 }
11477
0 commit comments