Skip to content

Commit

Permalink
[NDD-159]: Category 객체, 리포지토리 구현 (1h / 1h) (#43)
Browse files Browse the repository at this point in the history
* feat: 카테고리 객체 생성'

* feat: Category를 DB에 저장하고, 조회하는 Repository구현

* fix: dev rebase를 위해 conflict나는 app.module 임시 롤백
  • Loading branch information
JangAJang authored Nov 14, 2023
1 parent 79aa762 commit 1a146ed
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 0 deletions.
7 changes: 7 additions & 0 deletions BE/src/category/category.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { Module } from '@nestjs/common';
import { CategoryRepository } from './repository/category.repository';

@Module({
providers: [CategoryRepository],
})
export class CategoryModule {}
32 changes: 32 additions & 0 deletions BE/src/category/entity/category.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { Column, Entity, JoinTable, ManyToMany, ManyToOne } from 'typeorm';
import { DefaultEntity } from '../../app.entity';
import { Member } from '../../member/entity/member';
import { JoinColumn } from 'typeorm/browser';
import { Question } from '../../question/entity/question';

@Entity({ name: 'Category' })
export class Category extends DefaultEntity {
@Column()
name: string;

@ManyToOne(() => Member, { nullable: true, onDelete: 'CASCADE' })
@JoinColumn({ name: 'member' })
member: Member;

@ManyToMany(() => Question)
@JoinTable({ name: 'CategoryQuestion' })
questions: Question[];

constructor(name: string) {
super(undefined, new Date());
this.name = name;
}

static copyCategory(category: Category) {
return new Category(category.name);
}

getName() {
return this.name;
}
}
24 changes: 24 additions & 0 deletions BE/src/category/repository/category.repository.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Category } from '../entity/category';
import { Repository } from 'typeorm';

@Injectable()
export class CategoryRepository {
constructor(
@InjectRepository(Category) private repository: Repository<Category>,
) {}

async save(category: Category) {
await this.repository.save(category);
}

async findAllByMemberId(memberId: number) {
const option = memberId === null ? null : { id: memberId };
return await this.repository.findBy({ member: option });
}

async remove(category: Category) {
await this.repository.remove(category);
}
}

0 comments on commit 1a146ed

Please sign in to comment.