From 540b3e771a329d3186bef571d39cdf437f83339e Mon Sep 17 00:00:00 2001 From: Michael Housh Date: Sun, 12 Jan 2025 22:43:25 -0500 Subject: [PATCH] feat: Begins moving models into their own module. --- Package.swift | 6 ++++ Sources/SharedModels/Employee.swift | 31 ++++++++++++++++++++ Sources/SharedModels/User.swift | 38 +++++++++++++++++++++++++ Sources/SharedModels/Vendor.swift | 24 ++++++++++++++++ Sources/SharedModels/VendorBranch.swift | 0 5 files changed, 99 insertions(+) create mode 100644 Sources/SharedModels/Employee.swift create mode 100644 Sources/SharedModels/User.swift create mode 100644 Sources/SharedModels/Vendor.swift create mode 100644 Sources/SharedModels/VendorBranch.swift diff --git a/Package.swift b/Package.swift index b0b7166..8d489b7 100644 --- a/Package.swift +++ b/Package.swift @@ -42,6 +42,12 @@ let package = Package( .product(name: "VaporTesting", package: "vapor") ], swiftSettings: swiftSettings + ), + .target( + name: "SharedModels", + dependencies: [ + .product(name: "Dependencies", package: "swift-dependencies") + ] ) ], swiftLanguageModes: [.v5] diff --git a/Sources/SharedModels/Employee.swift b/Sources/SharedModels/Employee.swift new file mode 100644 index 0000000..a761d6e --- /dev/null +++ b/Sources/SharedModels/Employee.swift @@ -0,0 +1,31 @@ +import Dependencies +import Foundation + +public struct Employee: Equatable, Identifiable, Sendable { + public var id: UUID + public var active: Bool + public var createdAt: Date + public var firstName: String + public var lastName: String + public var updatedAt: Date + + public init( + id: UUID?, + active: Bool = true, + createdAt: Date? = nil, + firstName: String, + lastName: String, + updatedAt: Date? = nil + ) { + @Dependency(\.date) var date + @Dependency(\.uuid) var uuid + + self.id = id ?? uuid() + self.active = active + self.createdAt = createdAt ?? date() + self.firstName = firstName + self.lastName = lastName + self.updatedAt = updatedAt ?? date() + } + +} diff --git a/Sources/SharedModels/User.swift b/Sources/SharedModels/User.swift new file mode 100644 index 0000000..54500cc --- /dev/null +++ b/Sources/SharedModels/User.swift @@ -0,0 +1,38 @@ +import Dependencies +import Foundation + +public struct User: Identifiable, Codable, Sendable { + + public var id: UUID + public var createdAt: Date + public var email: String + public var updatedAt: Date + public var username: String + + public init( + id: UUID? = nil, + createdAt: Date? = nil, + email: String, + updatedAt: Date? = nil, + username: String + ) { + @Dependency(\.date) var date + @Dependency(\.uuid) var uuid + + self.id = id ?? uuid() + self.createdAt = createdAt ?? date() + self.email = email + self.updatedAt = updatedAt ?? date() + self.username = username + } +} + +public extension User { + static var mocks: [Self] { + [ + .init(email: "blob@test.com", username: "blob"), + .init(email: "blob-jr@test.com", username: "blob-jr"), + .init(email: "blob-sr@test.com", username: "blob-sr") + ] + } +} diff --git a/Sources/SharedModels/Vendor.swift b/Sources/SharedModels/Vendor.swift new file mode 100644 index 0000000..2403461 --- /dev/null +++ b/Sources/SharedModels/Vendor.swift @@ -0,0 +1,24 @@ +import Dependencies +import Foundation + +public struct Vendor: Identifiable, Equatable, Sendable { + public var id: UUID + public var createdAt: Date + public var name: String + public var updatedAt: Date + + public init( + id: UUID? = nil, + createdAt: Date? = nil, + name: String, + updatedAt: Date? = nil + ) { + @Dependency(\.date) var date + @Dependency(\.uuid) var uuid + + self.id = id ?? uuid() + self.createdAt = createdAt ?? date() + self.name = name + self.updatedAt = updatedAt ?? date() + } +} diff --git a/Sources/SharedModels/VendorBranch.swift b/Sources/SharedModels/VendorBranch.swift new file mode 100644 index 0000000..e69de29