Skip to content

Commit 2e386cc

Browse files
committed
feat: ✨ (api/user) role プロパティを追加
1 parent f3f8053 commit 2e386cc

File tree

6 files changed

+26
-3
lines changed

6 files changed

+26
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { registerEnumType } from '@nestjs/graphql';
2+
3+
// eslint-disable-next-line no-shadow
4+
export enum UserRoleEnum {
5+
USER = 'USER',
6+
OCCUPIER = 'OCCUPIER',
7+
}
8+
9+
registerEnumType(UserRoleEnum, { name: 'UserRole' });

apps/api/src/module/user/controller/dto/input/user-create.input.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { User } from '#api/module/user/domain/user.model';
44

55
@InputType()
66
export class UserCreateInput
7-
implements Omit<User, 'id' | 'hashedFingerprintId' | 'lostAndFoundState' | 'isDiscloseAsOwner' | 'createdAt' | 'isOnTheWay'>
7+
implements Omit<User, 'id' | 'hashedFingerprintId' | 'role' | 'lostAndFoundState' | 'isDiscloseAsOwner' | 'createdAt' | 'isOnTheWay'>
88
{
99
@Field(() => String, { nullable: false })
1010
@IsUUID()

apps/api/src/module/user/controller/dto/object/user.object.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Field, ID, ObjectType } from '@nestjs/graphql';
22
import { IsEmail, IsUUID, IsUrl, MaxLength } from 'class-validator';
33
import { UserLostAndFoundStateEnum } from '#api/module/user/controller/dto/enum/user-lost-and-found-state.enum';
4+
import { UserRoleEnum } from '#api/module/user/controller/dto/enum/user-role.enum';
45
import { User } from '#api/module/user/domain/user.model';
56

67
@ObjectType(User.name)
@@ -22,6 +23,9 @@ export class UserObject implements Omit<User, 'hashedFingerprintId' | 'isOnTheWa
2223
@MaxLength(320)
2324
email!: string;
2425

26+
@Field(() => UserRoleEnum, { nullable: false })
27+
role!: UserRoleEnum;
28+
2529
@Field(() => UserLostAndFoundStateEnum, { nullable: false })
2630
lostAndFoundState!: UserLostAndFoundStateEnum;
2731

apps/api/src/module/user/domain/user.model.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
type UserRole = 'USER' | 'OCCUPIER';
2+
13
type UserLostAndFoundState = 'NONE' | 'DELIVERING' | 'RETRIEVING';
24

35
export class User {
@@ -11,6 +13,8 @@ export class User {
1113

1214
readonly email: string;
1315

16+
readonly role: UserRole;
17+
1418
readonly lostAndFoundState: UserLostAndFoundState;
1519

1620
readonly avatarUrl: string;
@@ -25,6 +29,7 @@ export class User {
2529
hashedFingerprintId,
2630
name,
2731
email,
32+
role,
2833
lostAndFoundState,
2934
avatarUrl,
3035
isDiscloseAsOwner,
@@ -35,6 +40,7 @@ export class User {
3540
this.hashedFingerprintId = hashedFingerprintId;
3641
this.name = name;
3742
this.email = email;
43+
this.role = role;
3844
this.lostAndFoundState = lostAndFoundState;
3945
this.avatarUrl = avatarUrl;
4046
this.isDiscloseAsOwner = isDiscloseAsOwner;

apps/api/src/module/user/repository/user.repository.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ export interface UserRepositoryInterface {
88
findByReportedLostItemId(reportedLostItemId: LostItem['id']): Promise<User | null>;
99
findByOwnedLostItemId(ownedLostItemId: LostItem['id']): Promise<User | null>;
1010
findMany(userIds: User['id'][]): Promise<User[]>;
11-
create(user: Omit<User, 'id' | 'hashedFingerprintId' | 'lostAndFoundState' | 'isDiscloseAsOwner' | 'createdAt' | 'isOnTheWay'>): Promise<User>;
11+
create(
12+
user: Omit<User, 'id' | 'hashedFingerprintId' | 'role' | 'lostAndFoundState' | 'isDiscloseAsOwner' | 'createdAt' | 'isOnTheWay'>,
13+
): Promise<User>;
1214
update(userId: User['id'], user: Partial<Omit<User, 'id' | 'authId' | 'createdAt' | 'isOnTheWay'>>): Promise<User>;
1315
updateByAuthId(authId: User['authId'], user: Partial<Omit<User, 'id' | 'authId' | 'createdAt' | 'isOnTheWay'>>): Promise<User>;
1416
updateByHashedFingerprintId(

apps/api/src/module/user/use-case/user.use-case.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ export interface UserUseCaseInterface {
44
findUser(authId: User['authId']): Promise<User | null>;
55
findUserById(id: User['id']): Promise<User | null>;
66
findUserByHashedFingerprintId(hashedFingerprintId: NonNullable<User['hashedFingerprintId']>): Promise<User | null>;
7-
createUser(user: Omit<User, 'id' | 'hashedFingerprintId' | 'lostAndFoundState' | 'isDiscloseAsOwner' | 'createdAt' | 'isOnTheWay'>): Promise<User>;
7+
createUser(
8+
user: Omit<User, 'id' | 'hashedFingerprintId' | 'role' | 'lostAndFoundState' | 'isDiscloseAsOwner' | 'createdAt' | 'isOnTheWay'>,
9+
): Promise<User>;
810
updateUserDisclosure(authId: User['authId'], isDiscloseAsOwner: User['isDiscloseAsOwner']): Promise<User>;
911
relateFingerprintWithUser(authId: User['authId'], hashedFingerprintId: NonNullable<User['hashedFingerprintId']>): Promise<User>;
1012
}

0 commit comments

Comments
 (0)