feat: Initial purchase order views, login seems to be broken though.

This commit is contained in:
2025-01-17 12:58:32 -05:00
parent e1d07008a1
commit be0b5a6033
18 changed files with 534 additions and 288 deletions

View File

@@ -6,8 +6,8 @@ import SharedModels
public extension DatabaseClient.PurchaseOrders {
static func live(database: any Database) -> Self {
.init { create, createdById in
let model = try create.toModel(createdByID: createdById)
.init { create in
let model = try create.toModel()
try await model.save(on: database)
let fetched = try await PurchaseOrderModel.allQuery(on: database).filter(\.$id == model.id!).first()!
return try fetched.toDTO()
@@ -62,7 +62,7 @@ extension PurchaseOrder {
extension PurchaseOrder.Create {
func toModel(createdByID: User.ID) throws -> PurchaseOrderModel {
func toModel() throws -> PurchaseOrderModel {
try validate()
return .init(
materials: materials,
@@ -157,7 +157,7 @@ final class PurchaseOrderModel: Model, Codable, @unchecked Sendable {
truckStock: truckStock,
createdBy: createdBy.toDTO(),
createdFor: createdFor.toDTO(),
vendorBranch: vendorBranch.toDTO(),
vendorBranch: vendorBranch.toDetail(),
createdAt: createdAt,
updatedAt: updatedAt
)

View File

@@ -34,6 +34,11 @@ public extension DatabaseClient.VendorBranches {
}
return try await query.all().map { try $0.toDTO() }
} fetchAllWithDetail: {
try await VendorBranchModel.query(on: db)
.with(\.$vendor)
.all()
.map { try $0.toDetail() }
} get: { id in
try await VendorBranchModel.find(id, on: db).map { try $0.toDTO() }
} update: { id, updates in
@@ -147,6 +152,16 @@ final class VendorBranchModel: Model, @unchecked Sendable {
)
}
func toDetail() throws -> VendorBranch.Detail {
try .init(
id: requireID(),
name: name,
vendor: vendor.toDTO(),
createdAt: createdAt,
updatedAt: updatedAt
)
}
func applyUpdates(_ updates: VendorBranch.Update) throws {
try updates.validate()
if let name = updates.name {