Skip to content

Commit 794f420

Browse files
committed
feat: 도메인 레이어 구현 및 등록
1 parent afbc3dd commit 794f420

5 files changed

Lines changed: 46 additions & 1 deletion

File tree

DevLog/App/Assembler/DomainAssembler.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ final class DomainAssembler: Assembler {
2626
container.register(UpsertTodoUseCase.self) {
2727
UpsertTodoUseCaseImpl(container.resolve(TodoRepository.self))
2828
}
29+
30+
container.register(DeleteTodoUseCase.self) {
31+
DeleteTodoUseCaseImpl(container.resolve(TodoRepository.self))
32+
}
2933

3034
container.register(AuthSessionUseCase.self) {
3135
AuthSessionUseCaseImpl(container.resolve(AuthSessionRepository.self))
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//
2+
// DeleteTodoUseCase.swift
3+
// DevLog
4+
//
5+
// Created by 최윤진 on 2/12/26.
6+
//
7+
8+
protocol DeleteTodoUseCase {
9+
func execute(_ todoID: String) async throws
10+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//
2+
// DeleteTodoUseCaseImpl.swift
3+
// DevLog
4+
//
5+
// Created by 최윤진 on 2/12/26.
6+
//
7+
8+
final class DeleteTodoUseCaseImpl: DeleteTodoUseCase {
9+
private let repository: TodoRepository
10+
11+
init(_ repository: TodoRepository) {
12+
self.repository = repository
13+
}
14+
15+
func execute(_ todoID: String) async throws {
16+
try await repository.deleteTodo(todoID)
17+
}
18+
}

DevLog/Presentation/ViewModel/TodoViewModel.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,18 @@ final class TodoViewModel: Store {
5757

5858
private let fetchTodosByKindUseCase: FetchTodosByKindUseCase
5959
private let upsertTodoUseCase: UpsertTodoUseCase
60+
private let deleteTodoUseCase: DeleteTodoUseCase
6061
@Published private(set) var state: State
6162

6263
init(
6364
fetchTodosByKindUseCase: FetchTodosByKindUseCase,
6465
upsertTodoUseCase: UpsertTodoUseCase,
66+
deleteTodoUseCase: DeleteTodoUseCase,
6567
kind: TodoKind
6668
) {
6769
self.fetchTodosByKindUseCase = fetchTodosByKindUseCase
6870
self.upsertTodoUseCase = upsertTodoUseCase
71+
self.deleteTodoUseCase = deleteTodoUseCase
6972
self.state = State(kind: kind)
7073
}
7174

@@ -144,7 +147,16 @@ final class TodoViewModel: Store {
144147
}
145148
}
146149
case .swipeTodo(let todo):
147-
break
150+
Task {
151+
do {
152+
defer { send(.didLoading(false)) }
153+
send(.didLoading(true))
154+
try await deleteTodoUseCase.execute(todo.id)
155+
send(.refresh)
156+
} catch {
157+
send(.didShowAlert(error.localizedDescription))
158+
}
159+
}
148160
}
149161
}
150162
}

DevLog/UI/Home/HomeView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ struct HomeView: View {
123123
TodoView(viewModel: TodoViewModel(
124124
fetchTodosByKindUseCase: container.resolve(FetchTodosByKindUseCase.self),
125125
upsertTodoUseCase: container.resolve(UpsertTodoUseCase.self),
126+
deleteTodoUseCase: container.resolve(DeleteTodoUseCase.self),
126127
kind: todoKind
127128
))
128129
.environmentObject(router)

0 commit comments

Comments
 (0)