@testboard/common
简介
@testboard/common
是 TestBoard 平台的通用工具库,提供了一系列基础组件和工具函数,用于简化和标准化 NestJS 应用程序的开发。
特性
- 基础控制器和服务类,用于快速构建 CRUD 操作
- 通用拦截器,用于统一响应格式和日志记录
- 全局异常过滤器,用于标准化错误处理
- 实用工具函数,包括加密和格式化
- 完整的 TypeScript 类型支持
安装
pnpm add @testboard/common
快速开始
基础控制器和服务
使用基础控制器和服务类可以快速实现标准的 CRUD 操作:
import { BaseController, BaseService } from '@testboard/common';
import { PrismaService } from '../prisma/prisma.service';
import { User, Prisma } from '@prisma/client';
// 服务类实现
@Injectable()
export class UsersService extends BaseService<
PrismaClient['user'],
{
model: User;
create: Prisma.UserCreateArgs;
findUnique: Prisma.UserFindUniqueArgs;
findMany: Prisma.UserFindManyArgs;
update: Prisma.UserUpdateArgs;
delete: Prisma.UserDeleteArgs;
upsert: Prisma.UserUpsertArgs;
createMany: Prisma.UserCreateManyArgs;
updateMany: Prisma.UserUpdateManyArgs;
deleteMany: Prisma.UserDeleteManyArgs;
}
> {
constructor(private prisma: PrismaService) {
super(prisma.user);
}
}
// 控制器实现
@Controller('users')
export class UsersController extends BaseController<{
model: User;
create: Prisma.UserCreateArgs;
findUnique: Prisma.UserFindUniqueArgs;
findMany: Prisma.UserFindManyArgs;
update: Prisma.UserUpdateArgs;
delete: Prisma.UserDeleteArgs;
upsert: Prisma.UserUpsertArgs;
createMany: Prisma.UserCreateManyArgs;
updateMany: Prisma.UserUpdateManyArgs;
deleteMany: Prisma.UserDeleteManyArgs;
}> {
constructor(private readonly usersService: UsersService) {
super(usersService);
}
}
全局异常过滤器
在应用程序中注册全局异常过滤器:
import { AllExceptionsFilter } from '@testboard/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalFilters(new AllExceptionsFilter());
await app.listen(3000);
}
bootstrap();
拦截器
使用拦截器统一响应格式和添加日志:
import { Module } from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';
import { TransformInterceptor, LoggingInterceptor, TimeoutInterceptor } from '@testboard/common';
@Module({
providers: [
{
provide: APP_INTERCEPTOR,
useClass: TransformInterceptor
},
{
provide: APP_INTERCEPTOR,
useClass: LoggingInterceptor
},
{
provide: APP_INTERCEPTOR,
useClass: TimeoutInterceptor
}
]
})
export class AppModule {}
工具函数
使用加密工具函数:
import { CryptoUtil } from '@testboard/common';
// 加密密码
const hashedPassword = await CryptoUtil.hashPassword('password123');
// 验证密码
const isValid = await CryptoUtil.comparePassword('password123', hashedPassword);
文档
详细文档请参阅 docs
目录:
API 参考
基础类
BaseController
- 提供标准 CRUD 操作的控制器基类
BaseService
- 提供标准 CRUD 操作的服务基类
拦截器
TransformInterceptor
- 统一响应格式
LoggingInterceptor
- 请求日志记录
TimeoutInterceptor
- 请求超时处理
异常
BusinessException
- 业务逻辑异常
AllExceptionsFilter
- 全局异常过滤器
工具
CryptoUtil
- 加密相关工具函数
FormatUtil
- 格式化工具函数
贡献
欢迎贡献代码、报告问题或提出建议。
许可证
ISC