@@ -162,8 +162,53 @@ export class ObjectQLPlugin implements RuntimePlugin {
162162 * @private
163163 */
164164 private async registerRepository ( kernel : ObjectStackKernel ) : Promise < void > {
165- // TODO: Implement repository registration
166- // For now, this is a placeholder to establish the structure
165+ if ( ! this . config . datasources ) {
166+ console . log ( `[${ this . name } ] No datasources configured, skipping repository registration` ) ;
167+ return ;
168+ }
169+
170+ const datasources = this . config . datasources ;
171+
172+ // Helper function to get the driver for an object
173+ const getDriver = ( objectName : string ) : Driver => {
174+ const objectConfig = kernel . metadata . get < any > ( 'object' , objectName ) ;
175+ const datasourceName = objectConfig ?. datasource || 'default' ;
176+ const driver = datasources [ datasourceName ] ;
177+ if ( ! driver ) {
178+ throw new Error ( `Datasource '${ datasourceName } ' not found for object '${ objectName } '` ) ;
179+ }
180+ return driver ;
181+ } ;
182+
183+ // Override kernel CRUD methods to use drivers
184+ kernel . create = async ( objectName : string , data : any ) : Promise < any > => {
185+ const driver = getDriver ( objectName ) ;
186+ return await driver . create ( objectName , data ) ;
187+ } ;
188+
189+ kernel . update = async ( objectName : string , id : string , data : any ) : Promise < any > => {
190+ const driver = getDriver ( objectName ) ;
191+ return await driver . update ( objectName , id , data ) ;
192+ } ;
193+
194+ kernel . delete = async ( objectName : string , id : string ) : Promise < boolean > => {
195+ const driver = getDriver ( objectName ) ;
196+ const result = await driver . delete ( objectName , id ) ;
197+ return ! ! result ;
198+ } ;
199+
200+ kernel . find = async ( objectName : string , query : any ) : Promise < { value : any [ ] ; count : number } > => {
201+ const driver = getDriver ( objectName ) ;
202+ const value = await driver . find ( objectName , query ) ;
203+ const count = value . length ;
204+ return { value, count } ;
205+ } ;
206+
207+ kernel . get = async ( objectName : string , id : string ) : Promise < any > => {
208+ const driver = getDriver ( objectName ) ;
209+ return await driver . findOne ( objectName , id ) ;
210+ } ;
211+
167212 console . log ( `[${ this . name } ] Repository pattern registered` ) ;
168213 }
169214
0 commit comments