import Foundation enum WorkspaceKind: String, Codable, CaseIterable, Sendable { case personal case team } enum WorkspaceRole: String, Codable, CaseIterable, Sendable { case owner case admin case developer case viewer } struct SonarWorkspace: Codable, Identifiable, Hashable, Sendable { var id: UUID var name: String var kind: WorkspaceKind var role: WorkspaceRole var serverIDs: [UUID] var createdAt: Date var updatedAt: Date init(id: UUID = UUID(), name: String, kind: WorkspaceKind, role: WorkspaceRole, serverIDs: [UUID] = [], createdAt: Date = Date(), updatedAt: Date = Date()) { self.id = id self.name = name self.kind = kind self.role = role self.serverIDs = serverIDs self.createdAt = createdAt self.updatedAt = updatedAt } static let personal = SonarWorkspace( id: UUID(uuidString: "00000000-0000-0000-0000-000000000001")!, name: "Personal", kind: .personal, role: .owner ) } struct WorkspaceMember: Codable, Identifiable, Hashable, Sendable { var id: UUID var workspaceID: UUID var displayName: String var role: WorkspaceRole var joinedAt: Date }