34 lines
932 B
Swift
34 lines
932 B
Swift
import Foundation
|
|
|
|
struct LoadLeadsUseCase {
|
|
let repository: any LeadRepository
|
|
|
|
func execute(salesCode: String) async throws -> [Lead] {
|
|
try await repository.leads(for: salesCode, query: LeadQuery())
|
|
}
|
|
}
|
|
|
|
struct SearchLeadsUseCase {
|
|
let repository: any LeadRepository
|
|
|
|
func execute(salesCode: String, query: LeadQuery) async throws -> [Lead] {
|
|
try await repository.leads(for: salesCode, query: query.normalized)
|
|
}
|
|
}
|
|
|
|
struct SetLeadBookmarkUseCase {
|
|
let repository: any LeadRepository
|
|
|
|
func execute(_ bookmarked: Bool, leadID: String, salesCode: String) async throws -> Lead {
|
|
try await repository.setBookmark(bookmarked, leadID: leadID, salesCode: salesCode)
|
|
}
|
|
}
|
|
|
|
struct GetLeadUseCase {
|
|
let repository: any LeadRepository
|
|
|
|
func execute(id: String, salesCode: String) async throws -> Lead {
|
|
try await repository.lead(id: id, salesCode: salesCode)
|
|
}
|
|
}
|