Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion CERTI-iOS/Application/DIContainer/AppDIContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,10 @@ extension AppDIContainer {
return DefaultFetchCareersListUseCase(repository: careersRepository)
}

func makeEditCareerUseCase() -> EditCareersUseCase {
return DefaultEditCareersUseCase(repository: careersRepository)
}

func makeAddActivityUseCase() -> AddActivityUseCase {
return DefaultAddActivityUseCase(repository: activityRepository)
}
Expand All @@ -156,6 +160,10 @@ extension AppDIContainer {
return DefaultDeleteActivityUseCase(repository: activityRepository)
}

func makeEditActivityUseCase() -> EditActivityUseCase {
return DefaultEditActivityUseCase(repository: activityRepository)
}

func makeFetchActivityListUseCase() -> FetchActivityListUseCase {
return DefaultFetchActivityListUseCase(repository: activityRepository)
}
Expand Down Expand Up @@ -264,9 +272,11 @@ extension AppDIContainer {
addCareersUseCase: makeAddCareersUseCase(),
deleteCareersUseCase: makeDeleteCareersUseCase(),
fetchCareersListUseCase: makeFetchCareersListUseCase(),
editCareerUseCase: makeEditCareerUseCase(),
addActivityUseCase: makeAddActivityUseCase(),
deleteActivityUseCase: makeDeleteActivityUseCase(),
fetchActivityListUseCase: makeFetchActivityListUseCase()
fetchActivityListUseCase: makeFetchActivityListUseCase(),
editActivityUseCase: makeEditActivityUseCase()
)
}

Expand Down
7 changes: 7 additions & 0 deletions CERTI-iOS/Data/Network/Activity/ActivityAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ enum ActivityAPI {
case fetchActivityList
case addActivity(request: AddActivityRequestDTO)
case deleteActivity(id: Int)
case editActivity(activityId:Int, request: EditActivityRequestDTO)
}

extension ActivityAPI: BaseTargetType {
Expand All @@ -31,6 +32,8 @@ extension ActivityAPI: BaseTargetType {
return "activity"
case .deleteActivity(let id):
return "activity/\(id)"
case .editActivity(let activityId, _):
return "activity/\(activityId)"
}
}

Expand All @@ -42,6 +45,8 @@ extension ActivityAPI: BaseTargetType {
return .post
case .deleteActivity:
return .delete
case .editActivity:
return .put
}
}

Expand All @@ -53,6 +58,8 @@ extension ActivityAPI: BaseTargetType {
return .requestJSONEncodable(request)
case .deleteActivity:
return .requestPlain
case .editActivity(_, let request):
return .requestJSONEncodable(request)
}
}

Expand Down
5 changes: 5 additions & 0 deletions CERTI-iOS/Data/Network/Activity/ActivityService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ protocol ActivityServiceProtocol {
func fetchActivityList() async -> Result<ActivityListResponseDTO, NetworkError>
func deleteActivity(id: Int) async -> Result<Void, NetworkError>
func addActivity(request: AddActivityRequestDTO) async -> Result<Void, NetworkError>
func editActivity(activityId: Int, request: EditActivityRequestDTO) async -> Result<Void, NetworkError>
}

final class ActivityService: BaseService, ActivityServiceProtocol {
Expand All @@ -29,4 +30,8 @@ final class ActivityService: BaseService, ActivityServiceProtocol {
func addActivity(request: AddActivityRequestDTO) async -> Result<Void, NetworkError> {
return await requestVoid(provider, .addActivity(request: request))
}

func editActivity(activityId: Int, request: EditActivityRequestDTO) async -> Result<Void, NetworkError> {
return await requestVoid(provider, .editActivity(activityId: activityId, request: request))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// EditActivityRequestDTO.swift
// CERTI-iOS
//
// Created by 이상엽 on 1/26/26.
//

import Foundation

struct EditActivityRequestDTO: Encodable {
let startAt: String
let endAt: String
let place: String
let name: String
let description: String
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ struct ActivityListData: Decodable {
extension ActivityListData {
func toActivityListEntity() -> ActivityListEntity {
return ActivityListEntity(
list: activityDetailResponses.map{ $0.toResumeEntityData() }
list: activityDetailResponses.map{ $0.toActivityEntity() }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3
여기서 같은 엔티티를 써주고 있었군용!

)
}
}
Expand All @@ -31,8 +31,8 @@ struct Activity: Decodable, Identifiable {
let description: String
let place: String

func toResumeEntityData() -> ResumeEntityData {
return ResumeEntityData(
func toActivityEntity() -> ActivityEntity {
return ActivityEntity(
activityId: activityId,
startAt: startAt,
endAt: endAt,
Expand Down
7 changes: 7 additions & 0 deletions CERTI-iOS/Data/Network/Careers/CareersAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ enum CareersAPI {
case fetchCareersList
case deleteCareers(id: Int)
case addCareer(request: AddCareerRequestDTO)
case editCareer(careerId:Int, request: EditCareerRequestDTO)
}

extension CareersAPI: BaseTargetType {
Expand All @@ -31,6 +32,8 @@ extension CareersAPI: BaseTargetType {
return "careers/\(id)"
case .addCareer:
return "careers"
case .editCareer(let careerId, _):
return "careers/\(careerId)"
}
}

Expand All @@ -42,6 +45,8 @@ extension CareersAPI: BaseTargetType {
return .delete
case .addCareer:
return .post
case .editCareer:
return .put
}
}

Expand All @@ -53,6 +58,8 @@ extension CareersAPI: BaseTargetType {
return .requestPlain
case .addCareer(let request):
return .requestJSONEncodable(request)
case .editCareer(_, let request):
return .requestJSONEncodable(request)
}
}

Expand Down
11 changes: 8 additions & 3 deletions CERTI-iOS/Data/Network/Careers/CareersService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import Moya
protocol CareersServiceProtocol {
func fetchCareersList() async -> Result<CareersListResponseDTO, NetworkError>
func deledteCareers(id: Int) async -> Result<Void, NetworkError>
func addCareer(request: AddCareerRequestDTO) async -> Result<Bool, NetworkError>
func addCareer(request: AddCareerRequestDTO) async -> Result<Void, NetworkError>
func editCareer(careerId:Int, request: EditCareerRequestDTO) async -> Result<Void, NetworkError>
}

final class CareersService: BaseService, CareersServiceProtocol {
Expand All @@ -26,7 +27,11 @@ final class CareersService: BaseService, CareersServiceProtocol {
return await requestVoid(provider, .deleteCareers(id: id))
}

func addCareer(request: AddCareerRequestDTO) async -> Result<Bool, NetworkError> {
return await requestDecodable(provider, .addCareer(request: request))
func addCareer(request: AddCareerRequestDTO) async -> Result<Void, NetworkError> {
return await requestVoid(provider, .addCareer(request: request))
}

func editCareer(careerId:Int, request: EditCareerRequestDTO) async -> Result<Void, NetworkError> {
return await requestVoid(provider, .editCareer(careerId: careerId, request: request))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// EditCareerRequestDTO.swift
// CERTI-iOS
//
// Created by 이상엽 on 1/15/26.
//

import Foundation

struct EditCareerRequestDTO: Encodable {
let startAt: String
let endAt: String
let place: String
let name: String
let description: String
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ struct CareersListData: Decodable {
}

extension CareersListData {
func toCareersListEntity() -> CareersListEntity {
return CareersListEntity(
list: careerDetailResponseList.map{ $0.toResumeEntityData() }
func toCareersListEntity() -> CareerListEntity {
return CareerListEntity(
list: careerDetailResponseList.map{ $0.toCareerEntity() }
)
}
}
Expand All @@ -31,8 +31,8 @@ struct Career: Decodable, Identifiable {
let description: String
let place: String

func toResumeEntityData() -> ResumeEntityData {
return ResumeEntityData(
func toCareerEntity() -> CareerEntity {
return CareerEntity(
careerId: careerId,
startAt: startAt,
endAt: endAt,
Expand Down
5 changes: 5 additions & 0 deletions CERTI-iOS/Data/Repositories/DefaultActivityRepository.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,9 @@ final class DefaultActivityRepository: ActivityRepository {
let requestDTO = request.toAddActivityRequestDTO()
return await service.addActivity(request: requestDTO)
}

func editActivity(activityId: Int, request: ActivityEntity) async -> Result<Void, NetworkError> {
let requestDTO = request.toEditActivityRequestDTO()
return await service.editActivity(activityId: activityId, request: requestDTO)
}
}
9 changes: 7 additions & 2 deletions CERTI-iOS/Data/Repositories/DefaultCareersRepository.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ final class DefaultCareersRepository: CareersRepository {
self.service = service
}

func fetchCareersList() async -> Result<CareersListEntity, NetworkError> {
func fetchCareersList() async -> Result<CareerListEntity, NetworkError> {
let result = await service.fetchCareersList()
switch result {
case .success(let dto):
Expand All @@ -34,8 +34,13 @@ final class DefaultCareersRepository: CareersRepository {
return await service.deledteCareers(id: id)
}

func addCareer(request: CareersEntity) async -> Result<Bool, NetworkError> {
func addCareer(request: CareerEntity) async -> Result<Void, NetworkError> {
let requestDTO = request.toAddCareerRequestDTO()
return await service.addCareer(request: requestDTO)
}

func editCareer(careerId: Int, request: CareerEntity) async -> Result<Void, NetworkError> {
let requestDTO = request.toEditCareerRequestDTO()
return await service.editCareer(careerId: careerId, request: requestDTO)
}
}
54 changes: 54 additions & 0 deletions CERTI-iOS/Domain/Entities/ActivityEntity.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
//
// ActivityEntity.swift
// CERTI-iOS
//
// Created by 이상엽 on 1/17/26.
//

import Foundation

struct ActivityEntity {
let activityId: Int?
let startAt: String
let endAt: String
let name: String
let place: String
let description: String
}

// MARK: - Func

extension ActivityEntity {
func toAddActivityRequestDTO() -> AddActivityRequestDTO {
AddActivityRequestDTO(
startAt: startAt,
endAt: endAt,
place: place,
name: name,
description: description
)
}

func toEditActivityRequestDTO() -> EditActivityRequestDTO {
EditActivityRequestDTO(
startAt: startAt,
endAt: endAt,
place: place,
name: name,
description: description
)
}

func toActivityModel() -> ActivityModel? {
guard let activityId else { return nil }

return ActivityModel(
activityId: activityId,
startAt: startAt,
endAt: endAt,
name: name,
place: place,
description: description
)
}
}
18 changes: 18 additions & 0 deletions CERTI-iOS/Domain/Entities/ActivityListEntity.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//
// ActivityListEntity.swift
// CERTI-iOS
//
// Created by 이상엽 on 1/17/26.
//

import Foundation

struct ActivityListEntity {
let list: [ActivityEntity]
}

extension ActivityListEntity {
func toActivityModels() -> [ActivityModel] {
list.compactMap { $0.toActivityModel() }
}
}
54 changes: 54 additions & 0 deletions CERTI-iOS/Domain/Entities/CareerEntity.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
//
// CareerEntity.swift
// CERTI-iOS
//
// Created by 이상엽 on 1/17/26.
//

import Foundation

struct CareerEntity {
let careerId: Int?
let startAt: String
let endAt: String
let name: String
let place: String
let description: String
}

// MARK: - Func

extension CareerEntity {
func toAddCareerRequestDTO() -> AddCareerRequestDTO {
AddCareerRequestDTO(
startAt: startAt,
endAt: endAt,
place: place,
name: name,
description: description
)
}

func toEditCareerRequestDTO() -> EditCareerRequestDTO {
EditCareerRequestDTO(
startAt: startAt,
endAt: endAt,
place: place,
name: name,
description: description
)
}

func toCareerModel() -> CareerModel? {
guard let careerId else { return nil }

return CareerModel(
careerId: careerId,
startAt: startAt,
endAt: endAt,
name: name,
place: place,
description: description
)
}
}
Loading