Skip to content

Commit

Permalink
Feat(#175): 화장실 비품 추가, 비고 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
Kimsoo0119 committed Nov 1, 2024
1 parent 4a13ba3 commit fc96c1c
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 11 deletions.
16 changes: 9 additions & 7 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -259,13 +259,14 @@ enum ToiletType {
}

model ToiletInfo {
id Int @id @default(autoincrement())
placeId Int
type ToiletType // 화장실 유형 (남성용, 여성용, 공용, 1인용 등)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
place Place @relation(fields: [placeId], references: [id])
details ToiletDetail?
id Int @id @default(autoincrement())
placeId Int
type ToiletType // 화장실 유형 (남성용, 여성용, 공용, 1인용 등)
description String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
place Place @relation(fields: [placeId], references: [id])
details ToiletDetail?
}

enum LocationType {
Expand Down Expand Up @@ -457,6 +458,7 @@ model AdminPlaceToiletRating {
isDateSpot Boolean @default(false)
isFriendlySpot Boolean @default(false)
isGroupSpot Boolean @default(false)
description String?
cleanlinessRating Int // 청결도
interiorRating Int // 인테리어
odorRating Int // 냄새
Expand Down
11 changes: 11 additions & 0 deletions src/api/admin/controllers/dtos/request/update-toilet-info.dto.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
import { ToiletInfoDto } from '@api/toilet/request/toilet-info.dto';
import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import {
IsOptional,
IsNumber,
IsBoolean,
IsNotEmpty,
IsArray,
ValidateNested,
} from 'class-validator';

export class UpdateToiletInfoDto {
@ApiProperty({
required: false,
description: '전체적인 화장실 설명',
})
@IsOptional()
description?: string;

@ApiProperty({
type: Boolean,
required: false,
Expand Down Expand Up @@ -63,5 +72,7 @@ export class UpdateToiletInfoDto {
@ApiProperty({ type: [ToiletInfoDto], description: '화장실 상세 정보' })
@IsNotEmpty()
@IsArray()
@ValidateNested({ each: true })
@Type(() => ToiletInfoDto)
toilets: ToiletInfoDto[];
}
8 changes: 7 additions & 1 deletion src/api/admin/repository/admin.repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -217,12 +217,18 @@ export class AdminRepository {
{ type, details }: ToiletInfoDto,
transaction: Prisma.TransactionClient,
) {
const { amenities, ...toiletDetails } = details;
return await (transaction ?? this.prismaService).toiletInfo.create({
data: {
placeId,
type,
details: {
create: details,
create: {
...toiletDetails,
amenities: {
create: amenities,
},
},
},
},
});
Expand Down
2 changes: 0 additions & 2 deletions src/api/admin/services/admin-place.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,6 @@ export class AdminPlaceService {
);
}

async() {}

async searchPlaces(value: string): Promise<AdminSearchPlacesDto[]> {
const kakaoData = await this.fetchKakaoSearchResponse(value);
const places = await this.createPlacesFromKakaoData(kakaoData);
Expand Down
19 changes: 19 additions & 0 deletions src/api/toilet/request/toilet-amenity.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { ApiProperty } from '@nestjs/swagger';
import { AmenityType } from '@prisma/client';
import { IsNotEmpty, IsEnum } from 'class-validator';

export class ToiletAmenityDto {
@ApiProperty({
enum: AmenityType,
description: '비품 유형',
})
@IsNotEmpty()
@IsEnum(AmenityType)
type: AmenityType;

@ApiProperty({
description: '비품명',
})
@IsNotEmpty()
name: string;
}
22 changes: 21 additions & 1 deletion src/api/toilet/request/toilet-details.dto.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
import { ApiProperty } from '@nestjs/swagger';
import { LockType, LocationType } from '@prisma/client';
import { IsOptional, IsNumber, IsBoolean, IsEnum } from 'class-validator';
import {
IsOptional,
IsNumber,
IsBoolean,
IsEnum,
IsArray,
ValidateNested,
} from 'class-validator';
import { ToiletAmenityDto } from './toilet-amenity.dto';
import { Type } from 'class-transformer';

export class ToiletDetailsDto {
@ApiProperty({
Expand Down Expand Up @@ -154,4 +163,15 @@ export class ToiletDetailsDto {
})
@IsOptional()
locationDescription?: string;

@ApiProperty({
type: [ToiletAmenityDto],
description: '화장실 비품 정보',
required: false,
})
@IsOptional()
@IsArray()
@ValidateNested({ each: true })
@Type(() => ToiletAmenityDto)
amenities?: ToiletAmenityDto[];
}
12 changes: 12 additions & 0 deletions src/api/toilet/request/toilet-info.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,11 @@ import {
IsNotEmpty,
IsNumber,
IsOptional,
ValidateIf,
ValidateNested,
} from 'class-validator';
import { ToiletDetailsDto } from './toilet-details.dto';
import { Type } from 'class-transformer';

export class ToiletInfoDto {
@ApiProperty({
Expand All @@ -24,10 +27,19 @@ export class ToiletInfoDto {
@IsEnum(ToiletType)
type: ToiletType;

@ApiProperty({
description: '화장실 설명(비고)',
required: false,
})
@IsOptional()
description?: string;

@ApiProperty({
type: ToiletDetailsDto,
description: '화장실 상세 정보',
})
@IsNotEmpty()
@ValidateNested()
@Type(() => ToiletDetailsDto)
details: ToiletDetailsDto;
}
6 changes: 6 additions & 0 deletions src/api/toilet/response/toilet-info.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,10 @@ export class ToiletInfoDto extends BaseReturnDto implements ToiletInfo {
})
@Expose()
type: ToiletType;

@ApiProperty({
description: '화장실 설명(비고)',
})
@Expose()
description: string;
}

0 comments on commit fc96c1c

Please sign in to comment.