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 Update: Codable, Sendable { public let name: String? public init(name: String?) { self.name = name } } } #if DEBUG // public extension VendorBranch { // // static func generateMocks(countPerVendor: Int = 3, vendors: [Vendor]) -> [Self] { // @Dependency(\.date.now) var now // @Dependency(\.uuid) var uuid // // var output = [Self]() // // for vendor in vendors { // for _ in 0 ... countPerVendor { // output.append(.init( // id: uuid(), // name: RandomNames.cityNames.randomElement()!, // vendorID: vendor.id, // createdAt: now, // updatedAt: now // )) // } // } // // return output // } // } 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