import Dependencies import Foundation public struct User: Codable, Equatable, Identifiable, Sendable { public var id: UUID public var email: String public var username: String public var createdAt: Date? public var updatedAt: Date? public init( id: UUID, email: String, username: String, createdAt: Date? = nil, updatedAt: Date? = nil ) { self.id = id self.createdAt = createdAt self.email = email self.updatedAt = updatedAt self.username = username } } public extension User { struct Create: Codable, Sendable { public let username: String public let email: String public let password: String public let confirmPassword: String public init( username: String, email: String, password: String, confirmPassword: String ) { self.username = username self.email = email self.password = password self.confirmPassword = confirmPassword } } struct Login: Codable, Sendable { public let username: String? public let email: String? public let password: String public init( username: String?, email: String? = nil, password: String ) { self.username = username self.email = email self.password = password } } struct Token: Codable, Equatable, Identifiable, Sendable { public let id: UUID public let userID: User.ID public let value: String public init( id: UUID, userID: User.ID, value: String ) { self.id = id self.userID = userID self.value = value } } struct Update: Codable, Equatable, Sendable { public let username: String? public let email: String? } } #if DEBUG public extension User.Create { static func generateMocks(count: Int = 5) -> [Self] { (0 ... count).reduce(into: [Self]()) { array, _ in array.append(.init( username: RandomNames.userNames.randomElement()! + String(RandomNames.characterString.randomElement()!), email: String(RandomNames.characterString.randomElement()!) + RandomNames.emails.randomElement()!, password: "super-secret", confirmPassword: "super-secret" )) } } } #endif