Skip to content

Commit 92f9fdf

Browse files
authored
Merge pull request #183 from objectstack-ai/copilot/fix-action-step-error
2 parents 06e8cf2 + 899ba9b commit 92f9fdf

File tree

2 files changed

+49
-3
lines changed

2 files changed

+49
-3
lines changed

packages/foundation/core/src/plugin.ts

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

packages/foundation/platform-node/jest.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ module.exports = {
1111
testEnvironment: 'node',
1212
testMatch: ['**/test/**/*.test.ts'],
1313
moduleNameMapper: {
14+
'^@objectql/runtime$': '<rootDir>/../../objectstack/runtime/src',
15+
'^@objectstack/runtime$': '<rootDir>/test/__mocks__/@objectstack/runtime.ts',
1416
'^@objectql/(.*)$': '<rootDir>/../$1/src',
15-
'^@objectql/runtime$': '<rootDir>/test/__mocks__/@objectql/runtime.ts',
1617
},
1718
transform: {
1819
'^.+\\.ts$': ['ts-jest', {

0 commit comments

Comments
 (0)