Skip to content

Commit aa1e331

Browse files
feat: 역할(role) 모듈, 엔티티 정의
1 parent f47098a commit aa1e331

File tree

8 files changed

+121
-0
lines changed

8 files changed

+121
-0
lines changed

apps/backend/src/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { UploadModule } from './upload/upload.module';
1717
import { AuthModule } from './auth/auth.module';
1818
import { UserModule } from './user/user.module';
1919
import { WorkspaceModule } from './workspace/workspace.module';
20+
import { RoleModule } from './role/role.module';
2021

2122
@Module({
2223
imports: [
@@ -46,6 +47,7 @@ import { WorkspaceModule } from './workspace/workspace.module';
4647
AuthModule,
4748
UserModule,
4849
WorkspaceModule,
50+
RoleModule,
4951
],
5052
controllers: [AppController],
5153
providers: [AppService],
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Test, TestingModule } from '@nestjs/testing';
2+
import { RoleController } from './role.controller';
3+
4+
describe('RoleController', () => {
5+
let controller: RoleController;
6+
7+
beforeEach(async () => {
8+
const module: TestingModule = await Test.createTestingModule({
9+
controllers: [RoleController],
10+
}).compile();
11+
12+
controller = module.get<RoleController>(RoleController);
13+
});
14+
15+
it('should be defined', () => {
16+
expect(controller).toBeDefined();
17+
});
18+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { Controller } from '@nestjs/common';
2+
import { RoleService } from './role.service';
3+
4+
@Controller('role')
5+
export class RoleController {
6+
constructor(private readonly roleService: RoleService) {}
7+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import {
2+
Column,
3+
Entity,
4+
ManyToOne,
5+
PrimaryColumn,
6+
CreateDateColumn,
7+
} from 'typeorm';
8+
import { User } from '../user/user.entity';
9+
import { Workspace } from '../workspace/workspace.entity';
10+
11+
@Entity()
12+
export class Role {
13+
@PrimaryColumn()
14+
workspaceId: number;
15+
16+
@PrimaryColumn()
17+
userId: number;
18+
19+
@ManyToOne(() => Workspace, (workspace) => workspace.id, {
20+
onDelete: 'CASCADE',
21+
})
22+
workspace: Workspace;
23+
24+
@ManyToOne(() => User, (user) => user.id, { onDelete: 'CASCADE' })
25+
user: User;
26+
27+
@Column({ type: 'enum', enum: ['owner', 'guest'] })
28+
role: 'owner' | 'guest';
29+
30+
@CreateDateColumn()
31+
createdAt: Date;
32+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Module, forwardRef } from '@nestjs/common';
2+
import { RoleService } from './role.service';
3+
import { RoleController } from './role.controller';
4+
import { TypeOrmModule } from '@nestjs/typeorm';
5+
import { Role } from './role.entity';
6+
import { RoleRepository } from './role.repository';
7+
import { UserModule } from '../user/user.module';
8+
import { WorkspaceModule } from '../workspace/workspace.module';
9+
10+
@Module({
11+
imports: [
12+
TypeOrmModule.forFeature([Role]),
13+
forwardRef(() => UserModule),
14+
forwardRef(() => WorkspaceModule),
15+
],
16+
controllers: [RoleController],
17+
providers: [RoleService, RoleRepository],
18+
exports: [RoleService, RoleRepository],
19+
})
20+
export class RoleModule {}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Injectable } from '@nestjs/common';
2+
import { DataSource, Repository } from 'typeorm';
3+
import { Role } from './role.entity';
4+
import { InjectDataSource } from '@nestjs/typeorm';
5+
6+
@Injectable()
7+
export class RoleRepository extends Repository<Role> {
8+
constructor(@InjectDataSource() private dataSource: DataSource) {
9+
super(Role, dataSource.createEntityManager());
10+
}
11+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Test, TestingModule } from '@nestjs/testing';
2+
import { RoleService } from './role.service';
3+
4+
describe('RoleService', () => {
5+
let service: RoleService;
6+
7+
beforeEach(async () => {
8+
const module: TestingModule = await Test.createTestingModule({
9+
providers: [RoleService],
10+
}).compile();
11+
12+
service = module.get<RoleService>(RoleService);
13+
});
14+
15+
it('should be defined', () => {
16+
expect(service).toBeDefined();
17+
});
18+
});
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Injectable } from '@nestjs/common';
2+
import { RoleRepository } from './role.repository';
3+
import { UserRepository } from '../user/user.repository';
4+
import { WorkspaceRepository } from '../workspace/workspace.repository';
5+
6+
@Injectable()
7+
export class RoleService {
8+
constructor(
9+
private readonly roleRepository: RoleRepository,
10+
private readonly workspaceRepository: WorkspaceRepository,
11+
private readonly userRepository: UserRepository,
12+
) {}
13+
}

0 commit comments

Comments
 (0)