From 6202c22e187948135500119096ba2d5d077003d1 Mon Sep 17 00:00:00 2001 From: Alex H Date: Thu, 5 Dec 2024 12:27:39 +0100 Subject: [PATCH] feat(json-api-nestjs): Allow set id from request for postOne --- .../lib/helper/orm/methods/post-one/post-one.ts | 17 ++++++++++++----- .../helper/zod/zod-input-post-schema/index.ts | 2 ++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libs/json-api/json-api-nestjs/src/lib/helper/orm/methods/post-one/post-one.ts b/libs/json-api/json-api-nestjs/src/lib/helper/orm/methods/post-one/post-one.ts index 745bc74d..97ba0a7c 100644 --- a/libs/json-api/json-api-nestjs/src/lib/helper/orm/methods/post-one/post-one.ts +++ b/libs/json-api/json-api-nestjs/src/lib/helper/orm/methods/post-one/post-one.ts @@ -1,22 +1,29 @@ -import { DeepPartial, Equal } from 'typeorm'; +import { DeepPartial } from 'typeorm'; import { Entity, ResourceObject, TypeormServiceObject, } from '../../../../types'; import { PostData } from '../../../zod'; -import { RelationshipsResult } from '../../../../mixin/service'; -import { ObjectTyped } from '../../../utils'; export async function postOne( this: TypeormServiceObject, inputData: PostData ): Promise> { - const { attributes, relationships } = inputData; + const { attributes, relationships, id } = inputData; + + const idObject = id + ? { [this.typeormUtilsService.currentPrimaryColumn.toString()]: id } + : {}; + + const attributesObject = { + ...attributes, + ...idObject, + } as DeepPartial; const entityTarget = this.repository.manager.create( this.repository.target, - attributes as DeepPartial + attributesObject ); const saveData = await this.typeormUtilsService.saveEntityData( diff --git a/libs/json-api/json-api-nestjs/src/lib/helper/zod/zod-input-post-schema/index.ts b/libs/json-api/json-api-nestjs/src/lib/helper/zod/zod-input-post-schema/index.ts index 89cd4457..fb6289e0 100644 --- a/libs/json-api/json-api-nestjs/src/lib/helper/zod/zod-input-post-schema/index.ts +++ b/libs/json-api/json-api-nestjs/src/lib/helper/zod/zod-input-post-schema/index.ts @@ -8,8 +8,10 @@ import { zodRelationshipsSchema, ZodRelationshipsSchema, } from './relationships'; +import { ZodIdSchema } from './id'; export type PostShape = { + id: ZodOptional; attributes: ZodAttributesSchema; type: ZodTypeSchema; relationships: ZodOptional>;