33 lines
842 B
Swift
33 lines
842 B
Swift
import Foundation
|
|
|
|
/// Neutral projection for project selection. Persistence and customer associations
|
|
/// belong to the host application's service.
|
|
struct ARProject: Identifiable, Equatable {
|
|
let id: UUID
|
|
let name: String
|
|
let tank: Tank
|
|
let createdAt: Date
|
|
let source: Source
|
|
let reference: String?
|
|
|
|
enum Source { case supplied, custom }
|
|
}
|
|
|
|
@MainActor
|
|
protocol ARProjectsProviding {
|
|
func updateProject(id: UUID, name: String, tank: Tank) throws -> ARProject
|
|
func deleteProject(id: UUID) throws
|
|
func loadProjects() throws -> [ARProject]
|
|
func createProject(name: String, tank: Tank) throws -> ARProject
|
|
}
|
|
|
|
nonisolated extension TankSize {
|
|
var volumeTitle: String {
|
|
switch self {
|
|
case .t1_2: "2.700 l"
|
|
case .t2_1: "4.850 l"
|
|
case .t2_9: "6.400 l"
|
|
}
|
|
}
|
|
}
|