ccb781f933
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
/**
|
|
* Node (unified collection/entity) management service
|
|
*/
|
|
|
|
import { transceivePost } from './transceive'
|
|
import type { ListFilter, ListSort, ListRange } from '../types/common'
|
|
import type { CollectionInterface } from '../types/collection'
|
|
import type { EntityInterface } from '../types/entity'
|
|
|
|
export type NodeItem = CollectionInterface | EntityInterface
|
|
|
|
export interface NodeListRequest {
|
|
provider: string
|
|
service: string | number
|
|
location?: string | number | null
|
|
recursive?: boolean
|
|
filter?: ListFilter | null
|
|
sort?: ListSort | null
|
|
range?: ListRange | null
|
|
}
|
|
|
|
export type NodeListResponse = Record<string, NodeItem>
|
|
|
|
export interface NodeDeltaRequest {
|
|
provider: string
|
|
service: string | number
|
|
location?: string | number | null
|
|
signature: string
|
|
recursive?: boolean
|
|
detail?: 'ids' | 'full'
|
|
}
|
|
|
|
export interface NodeDeltaResult {
|
|
added: Array<string | number | NodeItem>
|
|
modified: Array<string | number | NodeItem>
|
|
removed: Array<string | number>
|
|
signature: string
|
|
}
|
|
|
|
export const nodeService = {
|
|
|
|
async list(request: NodeListRequest): Promise<NodeItem[]> {
|
|
const response = await transceivePost<NodeListRequest, NodeListResponse>('node.list', {
|
|
provider: request.provider,
|
|
service: request.service,
|
|
location: request.location ?? null,
|
|
recursive: request.recursive ?? false,
|
|
filter: request.filter ?? null,
|
|
sort: request.sort ?? null,
|
|
range: request.range ?? null,
|
|
})
|
|
|
|
return Object.values(response)
|
|
},
|
|
|
|
async delta(request: NodeDeltaRequest): Promise<NodeDeltaResult> {
|
|
return await transceivePost<NodeDeltaRequest, NodeDeltaResult>('node.delta', {
|
|
provider: request.provider,
|
|
service: request.service,
|
|
location: request.location ?? null,
|
|
signature: request.signature,
|
|
recursive: request.recursive ?? false,
|
|
detail: request.detail ?? 'ids',
|
|
})
|
|
},
|
|
}
|
|
|
|
export default nodeService
|