From 1036e82418cec195f58a56c43f5ec8331f8bd078 Mon Sep 17 00:00:00 2001 From: tylor Date: Mon, 23 Mar 2026 12:34:39 +0800 Subject: [PATCH 1/2] feat(session): create session with custom key --- src/session/dto/create-session.dto.ts | 7 ++++++- src/session/session.service.ts | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/session/dto/create-session.dto.ts b/src/session/dto/create-session.dto.ts index eecc3ab..2d89fd3 100644 --- a/src/session/dto/create-session.dto.ts +++ b/src/session/dto/create-session.dto.ts @@ -1,5 +1,10 @@ import { OmitType } from '@nestjs/swagger'; +import { IsOptional, IsString } from 'class-validator'; import { SessionDoc } from '../entities/session.entity'; -export class CreateSessionDto extends OmitType(SessionDoc, ['key'] as const) {} +export class CreateSessionDto extends OmitType(SessionDoc, ['key'] as const) { + @IsOptional() + @IsString() + key?: string; +} diff --git a/src/session/session.service.ts b/src/session/session.service.ts index 70451f6..501520d 100644 --- a/src/session/session.service.ts +++ b/src/session/session.service.ts @@ -16,8 +16,9 @@ export class SessionService { constructor(@InjectModel(Session.name) private readonly sessionModel: Model) {} create(createDto: CreateSessionDto): Promise { - const key = nanoid(); - const session = new this.sessionModel({ ...createDto, key }); + const { key: customKey, ...rest } = createDto; + const key = customKey ?? nanoid(); + const session = new this.sessionModel({ ...rest, key }); return session.save(); } From c59280854f4532e6e5dfb50a1435edf3a2e97847 Mon Sep 17 00:00:00 2001 From: tylor Date: Mon, 23 Mar 2026 12:39:13 +0800 Subject: [PATCH 2/2] feat(session): create session with custom key --- openapi.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/openapi.json b/openapi.json index dc32a6c..5931e10 100644 --- a/openapi.json +++ b/openapi.json @@ -1,5 +1,5 @@ { - "hash": "50b02791c7a6d303f38dd96ffece6974ae0eb8160c754e35f57027533f749d24", + "hash": "12cae88dd90f67ceadd6e705e09f456b1a7607a859abd228ca33d3d4a23f18d2", "openapi": "3.0.0", "paths": { "/hello": { @@ -2353,6 +2353,14 @@ "type": "string" } }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, { "name": "_limit", "required": false, @@ -2518,6 +2526,14 @@ "type": "string" } }, + { + "name": "key", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, { "name": "_limit", "required": false, @@ -6804,6 +6820,9 @@ "CreateSessionDto": { "type": "object", "properties": { + "key": { + "type": "string" + }, "expireAt": { "format": "date-time", "type": "string", @@ -6999,6 +7018,9 @@ "remark": { "type": "string", "description": "备注" + }, + "key": { + "type": "string" } } }, @@ -8425,6 +8447,9 @@ "type": "string", "description": "备注" }, + "key": { + "type": "string" + }, "_limit": { "type": "number", "description": "分页大小"