import Dependencies import Foundation public struct VendorBranch: Codable, Equatable, Identifiable, Sendable { public var id: UUID public var name: String public var vendorID: Vendor.ID public var createdAt: Date? public var updatedAt: Date? public init( id: UUID, name: String, vendorID: Vendor.ID, createdAt: Date? = nil, updatedAt: Date? = nil ) { self.id = id self.name = name self.vendorID = vendorID self.createdAt = createdAt self.updatedAt = updatedAt } } public extension VendorBranch { struct Create: Codable, Sendable { public let name: String public let vendorID: Vendor.ID public init(name: String, vendorID: Vendor.ID) { self.name = name self.vendorID = vendorID } } struct Detail: Codable, Equatable, Identifiable, Sendable { public var id: UUID public var name: String public var vendor: Vendor public var createdAt: Date? public var updatedAt: Date? public init( id: UUID, name: String, vendor: Vendor, createdAt: Date? = nil, updatedAt: Date? = nil ) { self.id = id self.name = name self.vendor = vendor self.createdAt = createdAt self.updatedAt = updatedAt } } struct Update: Codable, Sendable { public let name: String? public init(name: String?) { self.name = name } } } #if DEBUG public extension VendorBranch.Create { static func generateMocks(countPerVendor: Int = 3, vendors: [Vendor]) -> [Self] { return vendors.reduce(into: [Self]()) { output, vendor in output = (0 ... countPerVendor).reduce(into: output) { array, _ in array.append(.init(name: RandomNames.cityNames.randomElement()!, vendorID: vendor.id)) } } } } #endif