Skip to content

Commit

Permalink
✨ :: [#134] DI / AppComponent+Lecture 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
uuuunseo committed Jan 23, 2024
1 parent 668775e commit a8cf885
Show file tree
Hide file tree
Showing 27 changed files with 293 additions and 125 deletions.
2 changes: 1 addition & 1 deletion App/Sources/Application/DI/AppComponent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public extension AppComponent {
var inputActivityFactory: any InputActivityFactory {
InputActivityComponent(parent: self)
}

var activityDetailSettingFactory: any ActivityDetailSettingFactory {
ActivityDetailSettingComponent(parent: self)
}
Expand Down
52 changes: 52 additions & 0 deletions App/Sources/Application/DI/Lecture/AppComponent+Lecture.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import NeedleFoundation
import Service

public extension AppComponent {
var remoteLectureDataSource: any RemoteLectureDataSource {
shared {
RemoteLectureDataSourceImpl(keychain: keychain)
}
}

var lectureRepository: any LectureRepository {
shared {
LectureRepositoryImpl(remoteLectureDataSource: remoteLectureDataSource)
}
}

var lectureOpenUseCase: any LectureOpenUseCase {
shared {
LectureOpenUseCaseImpl(lectureRepository: lectureRepository)
}
}

var lectureListInquiryUseCase: any LectureListInquirtyUseCase {
shared {
LectureListInquirtyUseCaseImpl(lectureRepository: lectureRepository)
}
}

var lectureDetailInquiryUseCase: any LectureDetailInquiryUseCase {
shared {
LectureDetailInquiryUseCaseImpl(lectureRepository: lectureRepository)
}
}

var lectureApplyUseCase: any LectureApplyUseCase {
shared {
LectureApplyUseCaseImpl(lectureRepository: lectureRepository)
}
}

var waitingLectureApproveUseCase: any WaitingLectureApproveUseCase {
shared {
WaitingLectureApproveUseCaseImpl(lectureRepository: lectureRepository)
}
}

var waitingLectureRejectUseCase: any WaitingLectureRejectUseCase {
shared {
WaitingLectureRejectUseCaseImpl(lectureRepository: lectureRepository)
}
}
}
6 changes: 3 additions & 3 deletions App/Sources/Application/DI/User/AppComponent+User.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ public extension AppComponent {
RemoteUserDataSourceImpl(keychain: keychain)
}
}

var userRepository: any UserRepository {
shared {
UserRepositoryImpl(remoteUserDataSource: remoteUserDataSource)
}
}

var changePasswordUseCase: any ChangePasswordUseCase {
shared {
ChangePasswordUseCaseImpl(userRepository: userRepository)
}
}

var queryMyInfoUseCase: any QueryMyInfoUseCase {
shared {
QueryMyInfoUseCaseImpl(userRepository: userRepository)
Expand Down
202 changes: 155 additions & 47 deletions App/Sources/Application/NeedleGenerated.swift

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import NeedleFoundation
import SwiftUI
import Service
import SwiftUI

public protocol ActivityDetailSettingDependency: Dependency {
}
public protocol ActivityDetailSettingDependency: Dependency {}

public final class ActivityDetailSettingComponent: Component<ActivityDetailSettingDependency>, ActivityDetailSettingFactory {
public final class ActivityDetailSettingComponent: Component<ActivityDetailSettingDependency>,
ActivityDetailSettingFactory {
public func makeView(
activityDate: String,
activityCredit: Int,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ final class ActivityDetailSettingViewModel: BaseViewModel {

let creditValue: [Int] = [1, 2]
private let completion: (String, Int) -> Void

init(
activityDate: String,
activityCredit: Int,
Expand All @@ -20,12 +20,12 @@ final class ActivityDetailSettingViewModel: BaseViewModel {
self.selectedCredit = activityCredit
self.completion = completion
}

func updateDate(date: Date) {
self.date = date
self.selectedDate = date.description
}

func applyButtonDidTap() {
completion(selectedDate, selectedCredit ?? 0)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ struct InputActivityView: View {
@StateObject var viewModel: InputActivityViewModel

private let activityDetailSettingFactory: any ActivityDetailSettingFactory

init(
viewModel: InputActivityViewModel,
activityDetailSettingFactory: any ActivityDetailSettingFactory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,22 @@ final class InputActivityViewModel: BaseViewModel {
@Published var isPresentedDetailSettingAppend: Bool = false
@Published var activityDate: String = ""
@Published var activityCredit: Int = 0

private let addStudentActivityUseCase: any AddStudentActivityUseCase

init(addStudentActivityUseCase: any AddStudentActivityUseCase) {
self.addStudentActivityUseCase = addStudentActivityUseCase
}

func detailSettingAppendDismissed() {
self.isPresentedDetailSettingAppend = false
}

func updateActivityDetail(date: String, credit: Int) {
self.activityDate = date
self.activityCredit = credit
}

func addActivity() {
Task {
do {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import Foundation

public final class RemoteLectureDataSourceImpl: BaseRemoteDataSource<LectureAPI>, RemoteLectureDataSource {
public func lectureOpen(req: LectureOpenRequestDTO) async throws {
try await request(.lectureOpen(req))
}

public func lectureListInquiry() async throws {
try await request(.lectureListInquiry)
}

public func lectureDetailInquiry(userID: String) async throws {
try await request(.lectureDetailInquiry(userID: userID))
}

public func lectureApply(userID: String) async throws {
try await request(.lectureApply(userID: userID))
}

public func waitingLectureApprove(userID: String) async throws {
try await request(.waitingLectureApprove(userID: userID))
}

public func waitingLectureReject(userID: String) async throws {
try await request(.waitingLectureReject(userID: userID))
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import Foundation

public final class RemoteUserDataSourceImpl: BaseRemoteDataSource<UserAPI>, RemoteUserDataSource {

public func changePassword(req: ChangePasswordRequestDTO) async throws {
try await request(.changePassword(req))
}

public func queryMyInfo() async throws -> MyInfoEntity {
try await request(.queryMyInfo, dto: QueryMyInfoResponseDTO.self).toDomain()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import Foundation

struct LectureRepositoryImpl: LectureRepository {
public struct LectureRepositoryImpl: LectureRepository {
private let remoteLectureDataSource: RemoteLectureDataSource

init(remoteLectureDataSource: RemoteLectureDataSource) {
public init(remoteLectureDataSource: RemoteLectureDataSource) {
self.remoteLectureDataSource = remoteLectureDataSource
}

Expand Down
6 changes: 3 additions & 3 deletions Service/Sources/Data/Repository/User/UserRepositoryImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ import Foundation

public struct UserRepositoryImpl: UserRepository {
private let remoteUserDataSource: RemoteUserDataSource

public init(remoteUserDataSource: RemoteUserDataSource) {
self.remoteUserDataSource = remoteUserDataSource
}

public func changePassword(req: ChangePasswordRequestDTO) async throws {
try await remoteUserDataSource.changePassword(req: req)
}

public func queryMyInfo() async throws -> MyInfoEntity {
try await remoteUserDataSource.queryMyInfo()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Foundation
public struct LectureApplyUseCaseImpl: LectureApplyUseCase {
private let lectureRepository: any LectureRepository

init(lectureRepository: any LectureRepository) {
public init(lectureRepository: any LectureRepository) {
self.lectureRepository = lectureRepository
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import Foundation

struct LectureDetailInquiryUseCaseImpl: LectureDetailInquiryUseCase {
public struct LectureDetailInquiryUseCaseImpl: LectureDetailInquiryUseCase {
private let lectureRepository: any LectureRepository

init(lectureRepository: any LectureRepository) {
public init(lectureRepository: any LectureRepository) {
self.lectureRepository = lectureRepository
}

func callAsFunction(userID: String) async throws {
public func callAsFunction(userID: String) async throws {
try await lectureRepository.lectureDetailInquiry(userID: userID)
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import Foundation

struct LectureListInquirtyUseCaseImpl: LectureListInquirtyUseCase {
public struct LectureListInquirtyUseCaseImpl: LectureListInquirtyUseCase {
private let lectureRepository: any LectureRepository

init(lectureRepository: any LectureRepository) {
public init(lectureRepository: any LectureRepository) {
self.lectureRepository = lectureRepository
}

func callAsFunction() async throws {
public func callAsFunction() async throws {
try await lectureRepository.lectureListInquiry()
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import Foundation

struct LectureOpenUseCaseImpl: LectureOpenUseCase {
public struct LectureOpenUseCaseImpl: LectureOpenUseCase {
private let lectureRepository: any LectureRepository

init(lectureRepository: any LectureRepository) {
public init(lectureRepository: any LectureRepository) {
self.lectureRepository = lectureRepository
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import Foundation

struct WaitingLectureApproveUseCaseImpl: WaitingLectureUseCase {
public struct WaitingLectureApproveUseCaseImpl: WaitingLectureApproveUseCase {
private let lectureRepository: any LectureRepository

init(lectureRepository: any LectureRepository) {
public init(lectureRepository: any LectureRepository) {
self.lectureRepository = lectureRepository
}

func callAsFunction(userID: String) async throws {
public func callAsFunction(userID: String) async throws {
try await lectureRepository.waitingLectureApprove(userID: userID)
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import Foundation

struct WaitingLectureRejectUseCaseImpl: WaitingLectureRejectUseCase {
public struct WaitingLectureRejectUseCaseImpl: WaitingLectureRejectUseCase {
private let lectureRepository: any LectureRepository

init(lectureRepository: any LectureRepository) {
public init(lectureRepository: any LectureRepository) {
self.lectureRepository = lectureRepository
}

func callAsFunction(userID: String) async throws {
public func callAsFunction(userID: String) async throws {
try await lectureRepository.waitingLectureReject(userID: userID)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import Foundation

public struct ChangePasswordUseCaseImpl: ChangePasswordUseCase {
private let userRepository: any UserRepository

public init(userRepository: any UserRepository) {
self.userRepository = userRepository
}

public func callAsFunction(req: ChangePasswordRequestDTO) async throws {
try await userRepository.changePassword(req: req)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import Foundation

public struct QueryMyInfoUseCaseImpl: QueryMyInfoUseCase {
private let userRepository: any UserRepository

public init(userRepository: any UserRepository) {
self.userRepository = userRepository
}

public func callAsFunction() async throws -> MyInfoEntity {
try await userRepository.queryMyInfo()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,10 @@
import Foundation

final class RemoteLectureDataSource: BaseRemoteDataSource<LectureAPI> {
func lectureOpen(req: LectureOpenRequestDTO) async throws {
try await request(.lectureOpen(req))
}

func lectureListInquiry() async throws {
try await request(.lectureListInquiry)
}

func lectureDetailInquiry(userID: String) async throws {
try await request(.lectureDetailInquiry(userID: userID))
}

func lectureApply(userID: String) async throws {
try await request(.lectureApply(userID: userID))
}

func waitingLectureApprove(userID: String) async throws {
try await request(.waitingLectureApprove(userID: userID))
}

func waitingLectureReject(userID: String) async throws {
try await request(.waitingLectureReject(userID: userID))
}
public protocol RemoteLectureDataSource: BaseRemoteDataSource<LectureAPI> {
func lectureOpen(req: LectureOpenRequestDTO) async throws
func lectureListInquiry() async throws
func lectureDetailInquiry(userID: String) async throws
func lectureApply(userID: String) async throws
func waitingLectureApprove(userID: String) async throws
func waitingLectureReject(userID: String) async throws
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Foundation

public protocol WaitingLectureUseCase {
public protocol WaitingLectureApproveUseCase {
func callAsFunction(userID: String) async throws
}
Loading

0 comments on commit a8cf885

Please sign in to comment.