Notice
Recent Posts
Link
정화 코딩
[Node.js] NestJS와 Prisma 연결 + semester의 module, repository 파일 생성 본문
Web Development
[Node.js] NestJS와 Prisma 연결 + semester의 module, repository 파일 생성
jungh150c 2024. 10. 14. 22:58원래의 prisma 폴더 가져오기
admin-backend/
├── src/
│ ├── prisma/
│ │ ├── schema.prisma
│ │ └── ...
│ ├── semester/
│ ├── .env
│ ├── app.module.ts
│ ├── main.ts
├── test/
├── .gitignore
├── package.json
└── ...
나는 기존에 NestJS가 아닌 Express로 Prisma를 사용했었다. 그래서 기존의 prisma 폴더를 그대로 가져와 새롭게 만든 폴더 admin-backend 아래 src 폴더 아래에 넣어주었다. (.env도 일단 그대로 복사했다.)
prisma 관련 필요한 패키지 설치
...icpc-sinchon-workspace\apps\admin-backend> pnpm install prisma --save-dev
...icpc-sinchon-workspace\apps\admin-backend> pnpm install @prisma/client
...icpc-sinchon-workspace\apps\admin-backend> pnpm install prisma-markdown
...icpc-sinchon-workspace\apps\admin-backend> npx prisma generate
prisma.service.ts 파일과 prisma.module.ts 파일 생성
// /src/prisma/prisma.service.ts
import { Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
async onModuleInit() {
await this.$connect();
}
}
// /src/prisma/prisma.module.ts
import { Module } from '@nestjs/common';
import { PrismaService } from './prisma.service';
@Module({
providers: [PrismaService],
exports: [PrismaService],
})
export class PrismaModule {}
semester.repository.ts 파일과 semester.module.ts 파일 생성
// src/semester/semester.repository.ts
import { Injectable } from '@nestjs/common';
import type { Prisma, Semester } from "@prisma/client";
import type { PrismaService } from "src/prisma/prisma.service";
@Injectable()
export class SemesterRepository {
constructor(private prisma: PrismaService) {}
async createSemester(params: {
data: Prisma.SemesterCreateInput;
}): Promise<Semester> {
const { data } = params;
return this.prisma.semester.create({ data });
}
async getSemesters(): Promise<Semester[]> {
return this.prisma.semester.findMany();
}
async updateSemester(params: {
where: Prisma.SemesterWhereUniqueInput;
data: Prisma.SemesterUpdateInput;
}): Promise<Semester> {
const { where, data } = params;
return this.prisma.semester.update({ where, data });
}
async deleteSemester(params: {
where: Prisma.SemesterWhereUniqueInput;
}): Promise<Semester> {
const { where } = params;
return this.prisma.semester.delete({ where });
}
}
# module 파일 생성 명령어
...apps\admin-backend> nest g module semester
// src/semester/semester.module.ts
import { Module } from '@nestjs/common';
import { PrismaModule } from 'src/prisma/prisma.module';
import { SemesterRepository } from './semester.repository';
@Module({
imports: [PrismaModule],
providers: [SemesterRepository],
})
export class SemesterModule {}
[참고]
https://www.tomray.dev/nestjs-prisma
https://docs.nestjs.com/recipes/prisma
'Web Development' 카테고리의 다른 글
[Node.js] NestJS에서 semester의 controller 파일 생성 (13) | 2024.11.08 |
---|---|
[Node.js] NestJS에서 semester의 service 파일 생성 (0) | 2024.11.07 |
[Node.js] NestJS 개발 환경 세팅하기 (0) | 2024.10.11 |
[Spring] Spring Boot 시작해보기 (2) | 2024.09.22 |
[Node.js] NestJS이란? (0) | 2024.09.09 |
Comments