@@ -30,10 +30,24 @@ import { registerObjectHelper, getConfigsHelper } from './object';
3030import { convertIntrospectedSchemaToObjects } from './util' ;
3131
3232// Import ObjectStack engine for driver management
33+ // Note: We use type casting when interfacing with ObjectStack to maintain
34+ // backward compatibility with existing Driver implementations
3335import { ObjectQL as ObjectStackEngine } from '@objectstack/objectql' ;
3436
37+ /**
38+ * ObjectQL Application
39+ *
40+ * Integrates with @objectstack/objectql for driver management while
41+ * maintaining backward compatibility with existing Driver implementations.
42+ *
43+ * Drivers implementing the extended Driver interface from @objectql/types
44+ * are compatible with DriverInterface from @objectstack/spec through
45+ * optional property extensions.
46+ */
3547export class ObjectQL implements IObjectQL {
3648 public metadata : MetadataRegistry ;
49+ // Uses Driver from @objectql /types which has been extended to be
50+ // compatible with DriverInterface from @objectstack /spec
3751 private datasources : Record < string , Driver > = { } ;
3852 private remotes : string [ ] = [ ] ;
3953 private hooks : Record < string , HookEntry [ ] > = { } ;
@@ -55,6 +69,8 @@ export class ObjectQL implements IObjectQL {
5569 this . stackEngine = new ObjectStackEngine ( { } ) ;
5670
5771 // Register drivers with ObjectStack engine
72+ // Type casting is used here because Driver from @objectql /types is structurally
73+ // compatible with DriverInterface from @objectstack /spec through optional extensions
5874 for ( const [ name , driver ] of Object . entries ( this . datasources ) ) {
5975 this . stackEngine . registerDriver ( driver as any , name === 'default' ) ;
6076 }
@@ -81,20 +97,29 @@ export class ObjectQL implements IObjectQL {
8197 }
8298
8399 /**
84- * Get the ObjectStack engine instance for advanced driver management
100+ * Get access to the ObjectStack engine for advanced driver features
101+ *
102+ * @returns The ObjectStack engine instance managing drivers
85103 */
86104 getStackEngine ( ) : ObjectStackEngine {
87105 return this . stackEngine ;
88106 }
89107
90108 /**
91109 * Register a new driver with ObjectStack engine
110+ *
111+ * @param name - The name of the datasource
112+ * @param driver - Driver instance implementing Driver interface from @objectql/types
113+ * @param isDefault - Whether this driver should be the default datasource
92114 */
93115 registerDriver ( name : string , driver : Driver , isDefault : boolean = false ) {
94116 if ( this . datasources [ name ] ) {
95117 console . warn ( `[ObjectQL] Driver '${ name } ' already exists. Overwriting...` ) ;
96118 }
97119 this . datasources [ name ] = driver ;
120+ // Type casting for ObjectStack engine compatibility
121+ // Driver from @objectql /types has been extended with optional properties
122+ // to be compatible with DriverInterface from @objectstack /spec
98123 this . stackEngine . registerDriver ( driver as any , isDefault ) ;
99124 }
100125
0 commit comments