Skip to content

Commit 77926ec

Browse files
committed
feat: Update metadata handling in TaskForm and client tests for improved response structure
1 parent 5a94d73 commit 77926ec

2 files changed

Lines changed: 21 additions & 23 deletions

File tree

apps/console/src/components/TaskForm.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export function TaskForm({ client, editingTask, onSuccess, onCancel }: TaskFormP
2727
async function fetchMetadata() {
2828
try {
2929
// 'todo_task' should match the object name in Schema
30-
const res = await client.meta.getObject('todo_task');
30+
const res: any = await client.meta.getObject('todo_task');
3131

3232
// Protocol: getMetaItem returns { type, name, item }
3333
const schemaDef = res.item || res;

packages/client/src/client.hono.test.ts

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,23 @@ describe('ObjectStackClient (with Hono Server)', () => {
3333
const ql = kernel.getService<any>('objectql'); // Use 'objectql' service name for clarity
3434
if (method === 'create') {
3535
const res = await ql.insert(params.object, params.data);
36-
// Ensure we return the full object including input data + ID
37-
return { ...params.data, ...res };
36+
const record = { ...params.data, ...res };
37+
return { object: params.object, id: record.id || record._id, record };
3838
}
3939
// Params from HttpDispatcher: { object, id, ...query }
4040
if (method === 'get') {
41-
// Ensure we search by 'id' explicitly for InMemoryDriver
42-
return ql.findOne(params.object, { where: { id: params.id } });
41+
const record = await ql.findOne(params.object, { where: { id: params.id } });
42+
return record ? { object: params.object, id: params.id, record } : null;
4343
}
4444
// Params from HttpDispatcher: { object, filters }
4545
if (method === 'query') {
46-
// HttpDispatcher passes filters as simple object (map)
47-
// ObjectQL expects { filter, select, sort, ... }
48-
const data = await ql.find(params.object, { filter: params.filters });
49-
// HttpDispatcher expects { data, count }
50-
return { data, count: data.length };
46+
const records = await ql.find(params.object, { filter: params.filters });
47+
return { object: params.object, records, total: records.length };
48+
}
49+
if (method === 'find') {
50+
const records = await ql.find(params.object, { filter: params.filters });
51+
return { object: params.object, records, total: records.length };
5152
}
52-
if (method === 'find') return ql.find(params.object, { filter: params.filters });
5353
}
5454

5555
if (service === 'metadata') {
@@ -120,32 +120,30 @@ describe('ObjectStackClient (with Hono Server)', () => {
120120
const client = new ObjectStackClient({ baseUrl });
121121
await client.connect();
122122

123-
// Create
123+
// Create — Spec: CreateDataResponse = { object, id, record }
124124
const createdResponse = await client.data.create('customer', {
125125
name: 'Hono User',
126126
email: 'hono@example.com'
127127
});
128128

129-
expect(createdResponse.success).toBe(true);
130-
expect(createdResponse.data.name).toBe('Hono User');
131-
expect(createdResponse.data.id).toBeDefined();
132-
133-
// Retrieve
134-
const retrievedResponse = await client.data.get('customer', createdResponse.data.id);
135-
expect(retrievedResponse.success).toBe(true);
136-
expect(retrievedResponse.data.name).toBe('Hono User');
129+
expect(createdResponse.record.name).toBe('Hono User');
130+
expect(createdResponse.id).toBeDefined();
131+
132+
// Retrieve — Spec: GetDataResponse = { object, id, record }
133+
const retrievedResponse = await client.data.get('customer', createdResponse.id);
134+
expect(retrievedResponse.record.name).toBe('Hono User');
137135
});
138136

139137
it('should find data via hono', async () => {
140138
const client = new ObjectStackClient({ baseUrl });
141139
await client.connect();
142140

141+
// Spec: FindDataResponse = { object, records, total? }
143142
const resultsResponse = await client.data.find('customer', {
144143
where: { name: 'Hono User' }
145144
});
146145

147-
expect(resultsResponse.success).toBe(true);
148-
expect(resultsResponse.data.length).toBeGreaterThan(0);
149-
expect(resultsResponse.data[0].name).toBe('Hono User');
146+
expect(resultsResponse.records.length).toBeGreaterThan(0);
147+
expect(resultsResponse.records[0].name).toBe('Hono User');
150148
});
151149
});

0 commit comments

Comments
 (0)