Files
vapor-po/Sources/SharedModels/VendorBranch.swift

83 lines
1.9 KiB
Swift

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