Files
2026-10-06 09:13:11 +01:00

81 lines
2.2 KiB
Swift

import Foundation
struct SonarServer: Codable, Identifiable, Hashable {
var id = UUID()
var name: String
var baseURL: String
}
struct Project: Codable, Identifiable, Hashable {
var id: String { key }
let key: String
let name: String
let qualifier: String?
let visibility: String?
let lastAnalysisDate: String?
}
struct ProjectsResponse: Codable {
let components: [Project]
let paging: Paging?
}
struct Paging: Codable { let pageIndex: Int?; let pageSize: Int?; let total: Int? }
struct Measure: Codable, Hashable { let metric: String; let value: String?; let bestValue: Bool? }
struct MeasuresComponent: Codable { let key: String; let name: String; let measures: [Measure] }
struct MeasuresResponse: Codable { let component: MeasuresComponent }
struct QualityGateResponse: Codable { let projectStatus: ProjectStatus }
struct ProjectStatus: Codable { let status: String; let conditions: [GateCondition]? }
struct GateCondition: Codable, Hashable {
let status: String
let metricKey: String
let comparator: String?
let errorThreshold: String?
let actualValue: String?
}
struct Issue: Codable, Identifiable, Hashable {
var id: String { key }
let key: String
let rule: String?
let severity: String?
let component: String?
let project: String?
let line: Int?
let message: String?
let type: String?
let status: String?
let creationDate: String?
let effort: String?
}
struct IssuesResponse: Codable { let total: Int?; let p: Int?; let ps: Int?; let issues: [Issue] }
struct ServerStatusResponse: Codable { let id: String?; let version: String?; let status: String? }
struct ProjectSnapshot: Identifiable {
var id: String { project.key }
let project: Project
var measures: [String: String] = [:]
var qualityGate: String = "UNKNOWN"
}
struct TokenGenerateResponse: Codable {
let login: String?
let name: String?
let token: String
let createdAt: String?
let type: String?
}
struct CreatedProjectCredentials: Identifiable {
let id = UUID()
let projectKey: String
let projectName: String
let tokenName: String
let token: String
let serverURL: String
}