edgedb-js icon indicating copy to clipboard operation
edgedb-js copied to clipboard

Can't access link properties on computed backlinks

Open nathanburgess opened this issue 1 year ago • 0 comments

Code

const query = e.params(
  {
    parentId: e.uuid,
  },
  (params) =>
    e.select(e.Child, (child) => ({
      filter_single: e.op(params.parentId, "in", child.parents.id),
      parents: (parent) => ({
        "@prop": true,
        filter_single: e.op(parent.id, "=", params.parentId),
      }),
    })),
);

Schema

module default {
  type Child {
    multi link parents := .<children[is xlb::Parent];
  }

  type Parent {
    mutli link children: Child {
      prop: str;
    }
  }
}

Generated EdgeQL

This query causes the builder to throw an error, it's not possible to call .toEdgeQL

Error or desired behavior

 ⨯ ../packages/datalayer/edgedb/edgeql-js/select.ts (1209:12) @ resolveShapeElement
 ⨯ Error: link property '@prop' does not exist on link projects
 at resolveShapeElement (webpack-internal:///(rsc)/../../packages/datalayer/edgedb/edgeql-js/select.ts:501:19)
 at resolveShape (webpack-internal:///(rsc)/../../packages/datalayer/edgedb/edgeql-js/select.ts:439:26)
 at resolveShapeElement (webpack-internal:///(rsc)/../../packages/datalayer/edgedb/edgeql-js/select.ts:470:75)
 at resolveShape (webpack-internal:///(rsc)/../../packages/datalayer/edgedb/edgeql-js/select.ts:439:26)
 at Object.select (webpack-internal:///(rsc)/../../packages/datalayer/edgedb/edgeql-js/select.ts:399:47)
 at eval (webpack-internal:///(rsc)/./src/app/sandbox/page.tsx:26:77)
 at Object.params (webpack-internal:///(rsc)/../../packages/datalayer/edgedb/edgeql-js/params.ts:37:22)
 at eval (webpack-internal:///(rsc)/./src/app/sandbox/page.tsx:24:78)
 }
   1207 |     const linkProp = (scope as any)[key];
   1208 |     if (!linkProp) {
 > 1209 |       throw new Error(
        |            ^
   1210 |         (scope as any).__parent__
   1211 |           ? `link property '${key}' does not exist on link ${
   1212 |               (scope as any).__parent__.linkName

Versions (please complete the following information):

  • OS: MacOS Sonoma 14.3
  • EdgeDB version (e.g. 2.0): 4.5+641a8f3
  • EdgeDB CLI version (e.g. 2.0): 4.1.0+a8fe4d7
  • edgedb-js version (e.g. 0.20.10;): 1.4.1
  • @edgedb/generate version (e.g. 0.0.7;): 0.4.1
  • TypeScript version: 5.2.2
  • Node/Deno version: 20.9.0

nathanburgess avatar Mar 29 '24 19:03 nathanburgess