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

81 lines
1.8 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 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