Notice
Recent Posts
Link
정화 코딩
[Node.js] NestJS에서 semester의 service 파일 생성 본문
semester.controller.ts 파일과 semester.service.ts 파일 생성
# controller 파일 생성 명령어
...apps\admin-backend> nest g controller semester --no-spec
// src/semester/semester.controller.ts
import { Controller } from '@nestjs/common';
@Controller('semester')
export class SemesterController {}
위의 명령어로 파일을 생성했을 때 기본적으로 들어있는 내용이다.
# service 파일 생성 명령어
...apps\admin-backend> nest g service semester --no-spec
// src/semester/semester.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class SemesterService {}
위의 명령어로 파일을 생성했을 때 기본적으로 들어있는 내용이다.
// src/semester/semester.module.ts
import { Module } from '@nestjs/common';
import { PrismaModule } from 'src/prisma/prisma.module';
import { SemesterRepository } from './semester.repository';
import { SemesterController } from './semester.controller';
import { SemesterService } from './semester.service';
@Module({
imports: [PrismaModule],
providers: [SemesterRepository, SemesterService],
controllers: [SemesterController],
})
export class SemesterModule {}
자동으로 SemesterController, SemesterService를 import하는 부분이 추가되고 providers와 controllers에 추가된 것을 확인할 수 있다.
// src/app.module.ts
import { Module } from '@nestjs/common';
import { SemesterModule } from './semester/semester.module';
@Module({
imports: [SemesterModule]
})
export class AppModule {}
app.module.ts에서 SemesterModule을 import 해준다.
semester.repository.ts 파일에 CRUD 함수 작성
// 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 getSemester(params: {
where: Prisma.SemesterWhereUniqueInput;
}): Promise<Semester> {
const { where } = params;
return this.prisma.semester.findUnique({ where });
}
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 });
}
}
semester.service.ts 파일에 CRUD 함수 작성
// src/semester/semester.service.ts
import { Injectable } from '@nestjs/common';
import type { Prisma, Semester } from "@prisma/client";
import type { SemesterRepository } from "./semester.repository";
@Injectable()
export class SemesterService {
constructor(private semesterRepository: SemesterRepository) {}
async createSemester(params: { data: Prisma.SemesterCreateInput }) {
const { data } = params;
const semester = await this.semesterRepository.createSemester({ data });
return semester;
}
async getSemesters(): Promise<Semester[]> {
const semesters = await this.semesterRepository.getSemesters();
return semesters;
}
async getSemesterById(params: { id: number }): Promise<Semester | null> {
const { id } = params;
const semester = await this.semesterRepository.getSemester({
where: { id },
});
return semester;
}
async updateSemester(params: { where: Prisma.SemesterWhereUniqueInput; data: Prisma.SemesterUpdateInput }) {
const { where, data } = params;
const semester = await this.semesterRepository.updateSemester({
where,
data,
});
return semester;
}
async deleteSemester(params: { where: Prisma.SemesterWhereUniqueInput }) {
const { where } = params;
const semester = await this.semesterRepository.deleteSemester({ where });
return semester;
}
}
'Web Development' 카테고리의 다른 글
[Node.js] NestJS에서 Biome 사용 시 발생하는 useImportType 오류 (2) | 2024.11.11 |
---|---|
[Node.js] NestJS에서 semester의 controller 파일 생성 (13) | 2024.11.08 |
[Node.js] NestJS와 Prisma 연결 + semester의 module, repository 파일 생성 (0) | 2024.10.14 |
[Node.js] NestJS 개발 환경 세팅하기 (0) | 2024.10.11 |
[Spring] Spring Boot 시작해보기 (2) | 2024.09.22 |
Comments