Skip to content
This repository has been archived by the owner on Dec 7, 2024. It is now read-only.

Commit

Permalink
Merge pull request #208 from GSM-MSG/207-attendapi-refactoring
Browse files Browse the repository at this point in the history
🔀 :: [#207]  attendapi refactoring
  • Loading branch information
kimkyumbi authored Apr 17, 2024
2 parents 4aa1a8d + d579dbf commit c83bc3f
Show file tree
Hide file tree
Showing 9 changed files with 65 additions and 49 deletions.
8 changes: 4 additions & 4 deletions Service/Sources/DI/UseCaseAssembly.swift
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,13 @@ public final class UseCaseAssembly: Assembly {
clubAttendRepository: r.resolve(ClubAttendRepository.self)!
)
}
container.register(ChangeAllAttendStatusUseCase.self) { r in
ChangeAllAttendStatusUseCase(
container.register(ChangeAttendStatusUseCase.self) { r in
ChangeAttendStatusUseCase(
clubAttendRepository: r.resolve(ClubAttendRepository.self)!
)
}
container.register(StatusAllApplyUseCase.self) { r in
StatusAllApplyUseCase(
container.register(ChangeAllAttendStatusUseCase.self) { r in
ChangeAllAttendStatusUseCase(
clubAttendRepository: r.resolve(ClubAttendRepository.self)!
)
}
Expand Down
38 changes: 24 additions & 14 deletions Service/Sources/Data/DataSource/Remote/API/ClubAttendAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import Foundation
enum ClubAttendAPI {
case fetchAttendList(clubID: Int, date: String?, period: Period?)
case createAttendance(clubID: Int, name: String, date: String, period: [Period])
case changeAllAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus)
case statusAllApply(attendanceIDs: [String], attendanceStatus: AttendanceStatus)
case changeAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus)
case changeAllAttendStatus(attendanceIDs: [String], attendanceStatus: AttendanceStatus)
}

extension ClubAttendAPI: GCMSAPI {
Expand All @@ -21,10 +21,10 @@ extension ClubAttendAPI: GCMSAPI {
case let .createAttendance(clubID, _, _, _):
return "/\(clubID)/club"

case .changeAllAttendStatus(_, _):
case .changeAttendStatus(_, _):
return ""

case .statusAllApply(_, _):
case .changeAllAttendStatus(_, _):
return "/batch"
}
}
Expand All @@ -34,7 +34,7 @@ extension ClubAttendAPI: GCMSAPI {
case .fetchAttendList:
return .get

case .changeAllAttendStatus, .statusAllApply:
case .changeAttendStatus, .changeAllAttendStatus:
return .patch

case .createAttendance:
Expand All @@ -51,13 +51,23 @@ extension ClubAttendAPI: GCMSAPI {
], encoding: URLEncoding.queryString)

case let .createAttendance(_, name, date, period):
return .requestPlain

case .changeAllAttendStatus(_, _):
return .requestPlain

case .statusAllApply(_, _):
return .requestPlain
return .requestParameters(parameters: [
"name": "\(name)",
"date": "\(date)",
"period": "\(period)"
], encoding: JSONEncoding.default)

case let .changeAttendStatus(attendanceId, attendanceStatus):
return .requestParameters(parameters: [
"attendanceId": "\(attendanceId)",
"attendanceStatus": "\(attendanceStatus)"
], encoding: JSONEncoding.default)

case let .changeAllAttendStatus(attendanceIds, attendanceStatus):
return .requestParameters(parameters: [
"attendanceIds": "\(attendanceIds)",
"attendanceStatus": "\(attendanceStatus)"
], encoding: JSONEncoding.default)
}
}

Expand All @@ -79,7 +89,7 @@ extension ClubAttendAPI: GCMSAPI {
500: .serverError
]

case .statusAllApply:
case .changeAllAttendStatus:
return [
401: .unauthorized,
403: .notClubHeadOrClubTeacher,
Expand All @@ -90,7 +100,7 @@ extension ClubAttendAPI: GCMSAPI {
case .createAttendance:
return [:]

case .changeAllAttendStatus:
case .changeAttendStatus:
return [:]
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ public struct FetchClubAttendListResponse: Decodable {
public let classNum: Int
public let number: Int
public let attendanceStatus: AttendanceStatus
enum CodingKeys: String, CodingKey, Decodable {

public enum CodingKeys: String, CodingKey, Decodable {
case uuid
case attendanceID = "attendanceId"
case name
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import Foundation
protocol ClubAttendRemoteProtocol {
func fetchAttendList(clubID: Int, date: String?, period: Period?) -> Single<[ClubAttend]>
func createAttendance(clubID: Int, name: String, date: String, period: [Period]) -> Completable
func changeAllAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable
func statusAllApply(attendanceIDs: [String], attendanceStatus: AttendanceStatus) -> Completable
func changeAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable
func changeAllAttendStatus(attendanceIDs: [String], attendanceStatus: AttendanceStatus) -> Completable
}

final class ClubAttendRemote: BaseRemote<ClubAttendAPI>, ClubAttendRemoteProtocol {
Expand All @@ -20,13 +20,13 @@ final class ClubAttendRemote: BaseRemote<ClubAttendAPI>, ClubAttendRemoteProtoco
.asCompletable()
}

func changeAllAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable {
self.request(.changeAllAttendStatus(attendanceID: attendanceID, attendanceStatus: attendanceStatus))
func changeAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable {
self.request(.changeAttendStatus(attendanceID: attendanceID, attendanceStatus: attendanceStatus))
.asCompletable()
}

func statusAllApply(attendanceIDs: [String], attendanceStatus: AttendanceStatus) -> Completable {
self.request(.statusAllApply(attendanceIDs: attendanceIDs, attendanceStatus: attendanceStatus))
func changeAllAttendStatus(attendanceIDs: [String], attendanceStatus: AttendanceStatus) -> Completable {
self.request(.changeAllAttendStatus(attendanceIDs: attendanceIDs, attendanceStatus: attendanceStatus))
.asCompletable()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ final class DefaultClubAttendRepository: ClubAttendRepository {
clubAttendRemote.createAttendance(clubID: clubID, name: name, date: date, period: period)
}

func changeAllAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable {
clubAttendRemote.changeAllAttendStatus(attendanceID: attendanceID, attendanceStatus: attendanceStatus)
func changeAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable {
clubAttendRemote.changeAttendStatus(attendanceID: attendanceID, attendanceStatus: attendanceStatus)
}

func statusAllApply(attendanceIDs: [String], attendanceStatus: AttendanceStatus) -> Completable {
clubAttendRemote.statusAllApply(attendanceIDs: attendanceIDs, attendanceStatus: attendanceStatus)
func changeAllAttendStatus(attendanceIDs: [String], attendanceStatus: AttendanceStatus) -> Completable {
clubAttendRemote.changeAllAttendStatus(attendanceIDs: attendanceIDs, attendanceStatus: attendanceStatus)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ import RxSwift
public protocol ClubAttendRepository {
func fetchAttendList(clubID: Int, date: String?, period: Period?) -> Single<[ClubAttend]>
func createAttendance(clubID: Int, name: String, date: String, period: [Period]) -> Completable
func changeAllAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable
func statusAllApply(attendanceIDs: [String], attendanceStatus: AttendanceStatus) -> Completable
func changeAttendStatus(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable
func changeAllAttendStatus(attendanceIDs: [String], attendanceStatus: AttendanceStatus) -> Completable
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@ public struct ChangeAllAttendStatusUseCase {
}

private let clubAttendRepository: ClubAttendRepository

public func execute(attendanceID: String, attendanceStatus: AttendanceStatus) -> Completable {
clubAttendRepository.changeAllAttendStatus(attendanceID: attendanceID, attendanceStatus: attendanceStatus)

public func execute(
attendanceIDs: [String],
attendanceStatus: AttendanceStatus
) -> Completable {
clubAttendRepository.changeAllAttendStatus(attendanceIDs: attendanceIDs, attendanceStatus: attendanceStatus)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import RxSwift
import Foundation

public struct ChangeAttendStatusUseCase {
public init(clubAttendRepository: ClubAttendRepository) {
self.clubAttendRepository = clubAttendRepository
}

private let clubAttendRepository: ClubAttendRepository

public func execute(
attendanceID: String,
attendanceStatus: AttendanceStatus
) -> Completable {
clubAttendRepository.changeAttendStatus(attendanceID: attendanceID, attendanceStatus: attendanceStatus)
}
}
14 changes: 0 additions & 14 deletions Service/Sources/Domain/UseCases/Attend/StatusAllApplyUseCase.swift

This file was deleted.

0 comments on commit c83bc3f

Please sign in to comment.