61 lines
1.5 KiB
Swift
61 lines
1.5 KiB
Swift
|
|
import Foundation
|
||
|
|
import Apollo
|
||
|
|
|
||
|
|
class GraphQLService {
|
||
|
|
static let shared = GraphQLService()
|
||
|
|
|
||
|
|
private let apollo: ApolloClient
|
||
|
|
|
||
|
|
private init() {
|
||
|
|
let url = URL(string: "https://api.sankofa.nexus/graphql")!
|
||
|
|
let store = ApolloStore(cache: InMemoryNormalizedCache())
|
||
|
|
let networkTransport = RequestChainNetworkTransport(
|
||
|
|
interceptorProvider: DefaultInterceptorProvider(store: store),
|
||
|
|
endpointURL: url
|
||
|
|
)
|
||
|
|
|
||
|
|
self.apollo = ApolloClient(networkTransport: networkTransport, store: store)
|
||
|
|
}
|
||
|
|
|
||
|
|
func fetchResources(completion: @escaping (Result<[Resource], Error>) -> Void) {
|
||
|
|
// GraphQL query implementation
|
||
|
|
// This would use Apollo iOS SDK to fetch resources
|
||
|
|
}
|
||
|
|
|
||
|
|
func fetchSystemHealth(completion: @escaping (Result<SystemHealth, Error>) -> Void) {
|
||
|
|
// GraphQL query for system health
|
||
|
|
}
|
||
|
|
|
||
|
|
func fetchCostOverview(completion: @escaping (Result<CostOverview, Error>) -> Void) {
|
||
|
|
// GraphQL query for cost overview
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
struct Resource: Codable {
|
||
|
|
let id: String
|
||
|
|
let name: String
|
||
|
|
let type: String
|
||
|
|
let status: String
|
||
|
|
}
|
||
|
|
|
||
|
|
struct SystemHealth: Codable {
|
||
|
|
let regions: HealthMetrics
|
||
|
|
let clusters: HealthMetrics
|
||
|
|
let nodes: HealthMetrics
|
||
|
|
}
|
||
|
|
|
||
|
|
struct HealthMetrics: Codable {
|
||
|
|
let total: Int
|
||
|
|
let healthy: Int
|
||
|
|
let warning: Int
|
||
|
|
let critical: Int
|
||
|
|
}
|
||
|
|
|
||
|
|
struct CostOverview: Codable {
|
||
|
|
let currentMonth: Double
|
||
|
|
let lastMonth: Double
|
||
|
|
let trend: String
|
||
|
|
let percentageChange: Double
|
||
|
|
}
|
||
|
|
|