mirror of
https://github.com/grafana/grafana.git
synced 2025-08-06 19:59:32 +08:00
Provisioning: Refactor createOnCacheEntryAdded (#105228)
* Provisioning: Refactor createOnCacheEntryAdded * Use custom list resource type * add generated types and transformers * Switch to type guards * Do not create new array
This commit is contained in:
26
public/app/features/apiserver/guards.ts
Normal file
26
public/app/features/apiserver/guards.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import { Resource, ResourceList, GeneratedResource, GeneratedResourceList } from './types';
|
||||
|
||||
/**
|
||||
* Type guard to check if a GeneratedResource has all required fields to be a Resource
|
||||
*/
|
||||
export function isResource<T = object, S = object, K = string>(
|
||||
generated: GeneratedResource<T, S, K>
|
||||
): generated is Resource<T, S, K> {
|
||||
return (
|
||||
!!generated.apiVersion &&
|
||||
!!generated.kind &&
|
||||
!!generated.metadata?.name &&
|
||||
!!generated.metadata?.resourceVersion &&
|
||||
!!generated.metadata?.creationTimestamp &&
|
||||
!!generated.spec
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Type guard to check if a GeneratedResourceList has all required fields to be a ResourceList
|
||||
*/
|
||||
export function isResourceList<T = object, S = object, K = string>(
|
||||
generatedList: GeneratedResourceList<T, S, K>
|
||||
): generatedList is ResourceList<T, S, K> {
|
||||
return !!generatedList.metadata?.resourceVersion && Array.isArray(generatedList.items);
|
||||
}
|
@ -257,3 +257,18 @@ export interface K8sAPIGroupList {
|
||||
kind: 'APIGroupList';
|
||||
groups: K8sAPIGroup[];
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic types to match the generated k8s API types in the RTK query clients
|
||||
*/
|
||||
export interface GeneratedObjectMeta extends Partial<ObjectMeta> {}
|
||||
export interface GeneratedResource<T = object, S = object, K = string> extends Partial<TypeMeta<K>> {
|
||||
metadata?: GeneratedObjectMeta;
|
||||
spec?: T;
|
||||
status?: S;
|
||||
}
|
||||
|
||||
export interface GeneratedResourceList<Spec, Status, K = string> {
|
||||
metadata?: Partial<ListMeta>;
|
||||
items?: Array<GeneratedResource<Spec, Status, K>>;
|
||||
}
|
||||
|
Reference in New Issue
Block a user