From 2a35fd173bdb5af148502ded386b3914a864860e Mon Sep 17 00:00:00 2001 From: cc3630 Date: Tue, 23 Dec 2025 10:25:03 +0800 Subject: [PATCH 1/2] feat: update node&pnpm --- .github/workflows/ci.yml | 4 ++-- Dockerfile | 6 +++--- package.json | 18 +++++++++++++++--- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d383ed..17dbade 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,12 +57,12 @@ jobs: - name: Install Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 9 + version: 10.22.0 run_install: false - name: Get pnpm store directory diff --git a/Dockerfile b/Dockerfile index 07c407f..b45e322 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,16 +2,16 @@ # Create base image with PNPM installed ################### -FROM node:18-alpine AS pnpm +FROM node:22-alpine3.21 AS base ENV CI=1 RUN apk --no-cache add libc6-compat -RUN npm install -g pnpm +RUN npm install -g pnpm@10 ################### # Copy just my dependency files ################### -FROM pnpm AS deps +FROM base AS deps WORKDIR /app COPY package.json pnpm-lock.yaml .env ./ COPY ssl ./ssl diff --git a/package.json b/package.json index a28c000..0deca4f 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ "github-secret": "ts-node scripts/github-action-secret.ts" }, "dependencies": { - "@fastify/static": "8.2.0", "@alicloud/sms-sdk": "^1.1.6", + "@fastify/static": "8.2.0", "@nestjs/bull": "^11.0.2", "@nestjs/cache-manager": "^3.0.1", "@nestjs/common": "^11.1.6", @@ -145,6 +145,18 @@ "pnpm": { "overrides": { "socks": "^2.7.4" - } - } + }, + "onlyBuiltDependencies": [ + "@nestjs/core", + "@scarf/scarf", + "core-js", + "mongodb-memory-server", + "msgpackr-extract" + ] + }, + "engines": { + "node": ">=22", + "pnpm": ">=10.4.1" + }, + "packageManager": "pnpm@10.22.0" } From 8dfa267a4b59e1957322c2ed3f125a73baf2044c Mon Sep 17 00:00:00 2001 From: cc3630 Date: Wed, 24 Dec 2025 01:10:14 +0800 Subject: [PATCH 2/2] feat: ns seq --- openapi.json | 26 ++++++++++++++++++---- src/namespace/entities/namespace.entity.ts | 14 ++++++++++-- src/namespace/namespace.service.ts | 2 +- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/openapi.json b/openapi.json index 1cf3e07..8222210 100644 --- a/openapi.json +++ b/openapi.json @@ -1,5 +1,5 @@ { - "hash": "5d0e06635b84acee1346a8f5fae28c04229f650970293ab167f1d6dcbddb8b24", + "hash": "139fec2f3d22b1083b4bd083b1451f00e64c41705ab0a53056da6a19c6371562", "openapi": "3.0.0", "paths": { "/hello": { @@ -1822,7 +1822,9 @@ "key", "-key", "name", - "-name" + "-name", + "seq", + "-seq" ] } }, @@ -2009,7 +2011,9 @@ "key", "-key", "name", - "-name" + "-name", + "seq", + "-seq" ] } }, @@ -6544,6 +6548,10 @@ "exportable": { "type": "boolean", "description": "是否可导出" + }, + "seq": { + "type": "number", + "description": "排序" } }, "required": [ @@ -6600,6 +6608,10 @@ "type": "boolean", "description": "是否可导出" }, + "seq": { + "type": "number", + "description": "排序" + }, "id": { "type": "string", "description": "Entity id" @@ -6669,6 +6681,10 @@ "exportable": { "type": "boolean", "description": "是否可导出" + }, + "seq": { + "type": "number", + "description": "排序" } } }, @@ -8002,7 +8018,9 @@ "key", "-key", "name", - "-name" + "-name", + "seq", + "-seq" ] }, "name_like": { diff --git a/src/namespace/entities/namespace.entity.ts b/src/namespace/entities/namespace.entity.ts index 2663874..fc0bc1a 100644 --- a/src/namespace/entities/namespace.entity.ts +++ b/src/namespace/entities/namespace.entity.ts @@ -1,6 +1,7 @@ import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { IntersectionType } from '@nestjs/swagger'; -import { IsBoolean, IsNotEmpty, IsOptional, IsString } from 'class-validator'; +import { Type } from 'class-transformer'; +import { IsBoolean, IsNotEmpty, IsNumber, IsOptional, IsString } from 'class-validator'; import { Document } from 'mongoose'; import { IsNs } from 'src/common/validate'; @@ -8,7 +9,7 @@ import { SortFields } from 'src/lib/sort'; import { helper, MongoEntity } from 'src/mongo'; @Schema() -@SortFields(['key', 'name']) +@SortFields(['key', 'name', 'seq']) export class NamespaceDoc { /** * 额外数据 @@ -91,6 +92,15 @@ export class NamespaceDoc { @IsBoolean() @Prop() exportable?: boolean; + + /** + * 排序 + */ + @IsOptional() + @IsNumber() + @Type(() => Number) + @Prop() + seq?: number; } export const NamespaceSchema = helper(SchemaFactory.createForClass(NamespaceDoc)); diff --git a/src/namespace/namespace.service.ts b/src/namespace/namespace.service.ts index c9b6228..56436c2 100644 --- a/src/namespace/namespace.service.ts +++ b/src/namespace/namespace.service.ts @@ -29,7 +29,7 @@ export class NamespaceService { } list(query: ListNamespacesQuery = {}): Promise { - const { limit = 10, sort, offset = 0, filter } = buildMongooseQuery(query); + const { limit = 10, sort = 'seq', offset = 0, filter } = buildMongooseQuery(query); return this.namespaceModel.find(filter).sort(sort).skip(offset).limit(limit).exec(); }