From ebc7ed1d0a498cf824c58512b3a35bb39ccb7251 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:17:41 +0800 Subject: [PATCH] fix: rest-api, wrong links generated for to-one relationship --- packages/server/src/api/rest/index.ts | 48 +++++++------------------- packages/server/tests/api/rest.test.ts | 4 +-- 2 files changed, 14 insertions(+), 38 deletions(-) diff --git a/packages/server/src/api/rest/index.ts b/packages/server/src/api/rest/index.ts index 1634e6328..89bad6b6d 100644 --- a/packages/server/src/api/rest/index.ts +++ b/packages/server/src/api/rest/index.ts @@ -1042,43 +1042,19 @@ class RequestHandler { { relatedName: field, linkers: { - related: new Linker((primary, related) => - !related || Array.isArray(related) - ? this.makeLinkUrl( - `/${lowerCaseFirst(model)}/${this.getId( - model, - primary, - modelMeta - )}/${field}` - ) - : this.makeLinkUrl( - `/${lowerCaseFirst(model)}/${this.getId( - model, - primary, - modelMeta - )}/${field}/${this.getId(fieldMeta.type, related, modelMeta)}` - ) + related: new Linker((primary) => + this.makeLinkUrl( + `/${lowerCaseFirst(model)}/${this.getId(model, primary, modelMeta)}/${field}` + ) ), - relationship: new Linker((primary, related) => - !related || Array.isArray(related) - ? this.makeLinkUrl( - `/${lowerCaseFirst(model)}/${this.getId( - model, - primary, - modelMeta - )}/relationships/${field}` - ) - : this.makeLinkUrl( - `/${lowerCaseFirst(model)}/${this.getId( - model, - primary, - modelMeta - )}/relationships/${field}/${this.getId( - fieldMeta.type, - related, - modelMeta - )}` - ) + relationship: new Linker((primary) => + this.makeLinkUrl( + `/${lowerCaseFirst(model)}/${this.getId( + model, + primary, + modelMeta + )}/relationships/${field}` + ) ), }, } diff --git a/packages/server/tests/api/rest.test.ts b/packages/server/tests/api/rest.test.ts index 7e7ddd566..59acc8bd5 100644 --- a/packages/server/tests/api/rest.test.ts +++ b/packages/server/tests/api/rest.test.ts @@ -1386,8 +1386,8 @@ describe('REST server tests - regular prisma', () => { relationships: { author: { links: { - self: 'http://localhost/api/post/1/relationships/author/user1', - related: 'http://localhost/api/post/1/author/user1', + self: 'http://localhost/api/post/1/relationships/author', + related: 'http://localhost/api/post/1/author', }, data: { type: 'user', id: 'user1' }, },