Skip to content

Commit 6d823ae

Browse files
committed
test(metadata-protocol): the delete-refusal find double applies the caller's limit and refuses combinators
Claude-Session: https://claude.ai/code/session_01DiCSbmJrkzNhuEAier4VoJ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 5a30cfc commit 6d823ae

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

‎packages/metadata-protocol/src/protocol.package-delete-refusal.test.ts‎

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,21 @@ function boot(world: World, storeDelete: StoreDelete = landed) {
127127

128128
const engine = {
129129
registry,
130-
find: async (object: string, query: { where?: { package_id?: unknown } }) =>
131-
object === 'sys_metadata'
132-
? world.sysMetadata.filter((r) => r.package_id === query.where?.package_id).map((r) => ({ ...r }))
133-
: [],
130+
// Scalar equality on every `where` key, and the caller's `limit` by
131+
// presence after the filter. A combinator (`$or`, the org-scoped
132+
// uninstall's) is not implemented here, so it is refused, never answered
133+
// as "no rows" — these pins uninstall with `allTenants: true`.
134+
find: async (object: string, query?: { where?: Record<string, unknown>; limit?: number }) => {
135+
if (object !== 'sys_metadata') return [];
136+
const where = query?.where ?? {};
137+
for (const key of Object.keys(where)) {
138+
if (key.startsWith('$')) throw new Error(`find double: '${key}' is not implemented`);
139+
}
140+
const matched = world.sysMetadata.filter((row) =>
141+
Object.entries(where).every(([key, value]) => (row as unknown as Record<string, unknown>)[key] === value));
142+
const page = typeof query?.limit === 'number' ? matched.slice(0, query.limit) : matched;
143+
return page.map((row) => ({ ...row }));
144+
},
134145
};
135146
const services = new Map<string, unknown>([
136147
['package', {

0 commit comments

Comments
 (0)