From 3ef5af8667c15fddf6acefa17c4b219100a38668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E7=A7=8B=E6=97=AD?= Date: Wed, 15 Feb 2023 20:32:14 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20users=20resource?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + pnpm-lock.yaml | 19 +++++++++++++++++++ src/app.module.ts | 2 ++ src/users/users.controller.ts | 24 ++++++++++++++++++++++++ src/users/users.module.ts | 9 +++++++++ src/users/users.service.ts | 26 ++++++++++++++++++++++++++ 6 files changed, 81 insertions(+) create mode 100644 src/users/users.controller.ts create mode 100644 src/users/users.module.ts create mode 100644 src/users/users.service.ts diff --git a/package.json b/package.json index 7aaeeb2..f7b3e3d 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@nestjs/common": "^9.0.0", "@nestjs/config": "^2.3.1", "@nestjs/core": "^9.0.0", + "@nestjs/mapped-types": "^1.2.2", "@nestjs/platform-express": "^9.0.0", "@prisma/client": "^4.10.1", "nestjs-prisma": "^0.20.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8926abc..1a33748 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,7 @@ specifiers: '@nestjs/common': ^9.0.0 '@nestjs/config': ^2.3.1 '@nestjs/core': ^9.0.0 + '@nestjs/mapped-types': ^1.2.2 '@nestjs/platform-express': ^9.0.0 '@nestjs/schematics': ^9.0.0 '@prisma/client': ^4.10.1 @@ -33,6 +34,7 @@ dependencies: '@nestjs/common': 9.3.9_mnr6j2del53muneqly5h4y27ai '@nestjs/config': 2.3.1_jrq2rdgfp2sx67wmylmrqliwxe '@nestjs/core': 9.3.9_q6agyr4hwia55oswpsa7zjxcpm + '@nestjs/mapped-types': 1.2.2_ilxajbd2e536h4oohar7aljlry '@nestjs/platform-express': 9.3.9_77foi4w27ghy47yutmnzv7krjy '@prisma/client': 4.10.1_prisma@4.10.1 nestjs-prisma: 0.20.0_uhhmeuf5jto6tk72f36tv2cdfe @@ -423,6 +425,23 @@ packages: - encoding dev: false + /@nestjs/mapped-types/1.2.2_ilxajbd2e536h4oohar7aljlry: + resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==} + peerDependencies: + '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 + class-transformer: ^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0 + class-validator: ^0.11.1 || ^0.12.0 || ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 9.3.9_mnr6j2del53muneqly5h4y27ai + reflect-metadata: 0.1.13 + dev: false + /@nestjs/platform-express/9.3.9_77foi4w27ghy47yutmnzv7krjy: resolution: {integrity: sha512-f8ja2sYuDGj2QSMmjg05n3WF19wJG5yTiYxRi64nsu5GKL0qLM1LzxNemehkni/knExlvF2bDpbKKpna9nC1JA==} peerDependencies: diff --git a/src/app.module.ts b/src/app.module.ts index 9e66234..960cf9b 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,6 +1,7 @@ import { Logger, Module } from '@nestjs/common' import { ConfigModule } from '@nestjs/config' import { PrismaModule, loggingMiddleware } from 'nestjs-prisma' +import { UsersModule } from './users/users.module' @Module({ imports: [ @@ -16,6 +17,7 @@ import { PrismaModule, loggingMiddleware } from 'nestjs-prisma' ], }, }), + UsersModule, ], controllers: [], providers: [], diff --git a/src/users/users.controller.ts b/src/users/users.controller.ts new file mode 100644 index 0000000..3a820d4 --- /dev/null +++ b/src/users/users.controller.ts @@ -0,0 +1,24 @@ +import { Controller, Get, Post, Body, Param } from '@nestjs/common' +import { UsersService } from './users.service' + +@Controller() +export class UsersController { + constructor(private readonly userService: UsersService) {} + + @Get('users') + async findUsers() { + return this.userService.findUsers() + } + + @Get('users/:id') + async getUserInfo(@Param('id') id: string) { + return this.userService.getUserInfo(id) + } + + @Post('users') + async createUser( + @Body() userData: { email: string; password: string; username?: string }, + ) { + return this.userService.createUser(userData) + } +} diff --git a/src/users/users.module.ts b/src/users/users.module.ts new file mode 100644 index 0000000..317fd56 --- /dev/null +++ b/src/users/users.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common' +import { UsersService } from './users.service' +import { UsersController } from './users.controller' + +@Module({ + controllers: [UsersController], + providers: [UsersService], +}) +export class UsersModule {} diff --git a/src/users/users.service.ts b/src/users/users.service.ts new file mode 100644 index 0000000..4e8d7c8 --- /dev/null +++ b/src/users/users.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@nestjs/common' +import { PrismaService } from 'nestjs-prisma' +import { Prisma } from '@prisma/client' + +@Injectable() +export class UsersService { + constructor(private prisma: PrismaService) {} + + async findUsers() { + return this.prisma.user.findMany() + } + + async getUserInfo(id: string) { + return this.prisma.user.findUnique({ + where: { + id, + }, + }) + } + + async createUser(data: Prisma.UserCreateInput) { + return this.prisma.user.create({ + data, + }) + } +}