kuzzle-device-manager-types 3.0.0-3-dev.19 → 3.0.0-3-dev.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/migration/migrate-tenant-classes.d.ts +2 -0
- package/dist/lib/modules/asset/AssetHistoryService.d.ts +1 -1
- package/dist/lib/modules/asset/AssetService.d.ts +18 -12
- package/dist/lib/modules/asset/AssetsController.d.ts +1 -1
- package/dist/lib/modules/asset/roles/RoleAssetsAdmin.d.ts +1 -0
- package/dist/lib/modules/asset/roles/RoleAssetsReader.d.ts +1 -0
- package/dist/lib/modules/asset/types/AssetApi.d.ts +6 -6
- package/dist/lib/modules/asset/types/AssetEvents.d.ts +1 -1
- package/dist/lib/modules/device/DeviceService.d.ts +11 -11
- package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +1 -0
- package/dist/lib/modules/device/roles/RoleDevicesReader.d.ts +1 -0
- package/dist/lib/modules/device/types/DeviceApi.d.ts +2 -2
- package/dist/lib/modules/device/types/DeviceContent.d.ts +2 -2
- package/dist/lib/modules/device/types/DeviceEvents.d.ts +1 -1
- package/dist/lib/modules/group/GroupsController.d.ts +3 -3
- package/dist/lib/modules/group/GroupsService.d.ts +19 -14
- package/dist/lib/modules/group/index.d.ts +1 -0
- package/dist/lib/modules/group/roles/RoleGroupsAdmin.d.ts +1 -0
- package/dist/lib/modules/group/roles/RoleGroupsReader.d.ts +1 -0
- package/dist/lib/modules/group/types/GroupEvents.d.ts +8 -0
- package/dist/lib/modules/group/types/GroupsApi.d.ts +1 -1
- package/dist/lib/modules/measure/MeasureExporter.d.ts +5 -5
- package/dist/lib/modules/measure/MeasureService.d.ts +2 -2
- package/dist/lib/modules/measure/MeasureTargetBuilder.d.ts +1 -1
- package/dist/lib/modules/measure/types/MeasureTarget.d.ts +1 -1
- package/dist/lib/modules/model/MetadataReferential.d.ts +119 -0
- package/dist/lib/modules/model/ModelService.d.ts +120 -22
- package/dist/lib/modules/model/ModelsConflicts.d.ts +23 -0
- package/dist/lib/modules/model/ModelsController.d.ts +11 -2
- package/dist/lib/modules/model/ModelsRegister.d.ts +37 -5
- package/dist/lib/modules/model/types/ModelApi.d.ts +105 -14
- package/dist/lib/modules/model/types/ModelContent.d.ts +73 -7
- package/dist/lib/modules/model/types/ModelDefinition.d.ts +6 -3
- package/dist/lib/modules/model/types/ModelEvents.d.ts +9 -4
- package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +58 -25
- package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +46 -4
- package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +11 -0
- package/dist/lib/modules/shared/services/AbstractExporter.d.ts +8 -8
- package/dist/lib/modules/shared/services/BaseService.d.ts +7 -7
- package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +3 -3
- package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +8 -8
- package/dist/lib/modules/shared/types/DigitalTwinApi.d.ts +1 -1
- package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +2 -2
- package/dist/lib/modules/shared/utils/lock.d.ts +7 -1
- package/dist/tests/application/assets/Pole.d.ts +5 -0
- package/dist/tests/application/assets/index.d.ts +1 -0
- package/dist/tests/application/metadata.d.ts +5 -0
- package/package.json +1 -1
|
@@ -2,11 +2,36 @@ import { KuzzleRequest } from "kuzzle";
|
|
|
2
2
|
import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
3
3
|
import { DeviceManagerPlugin } from "../plugin";
|
|
4
4
|
import { BaseService, SearchParams } from "../shared";
|
|
5
|
-
import { AssetModelContent, DeviceModelContent, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
|
|
5
|
+
import { AssetModelContent, DeviceModelContent, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, MetadataReferential, MetadataReferentialEntry, TooltipModels } from "./types/ModelContent";
|
|
6
6
|
import { SchemaObject } from "ajv";
|
|
7
7
|
import { MeasureValuesDetails } from "../measure";
|
|
8
8
|
import { NamedMeasures } from "../decoder";
|
|
9
9
|
import { KuzzleLogger } from "kuzzle-logger";
|
|
10
|
+
import { MetadataModelContent } from "./MetadataReferential";
|
|
11
|
+
/**
|
|
12
|
+
* Fields of a group model update.
|
|
13
|
+
* Affinity and icon are kept when omitted.
|
|
14
|
+
*/
|
|
15
|
+
export type GroupModelUpdate = {
|
|
16
|
+
affinity?: JSONObject;
|
|
17
|
+
defaultMetadata: JSONObject;
|
|
18
|
+
icon?: string;
|
|
19
|
+
locales: {
|
|
20
|
+
[valueName: string]: LocaleDetails;
|
|
21
|
+
};
|
|
22
|
+
metadataDetails: MetadataDetails;
|
|
23
|
+
metadataGroups: MetadataGroups;
|
|
24
|
+
metadataMappings: MetadataMappings;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Fields of a device model update.
|
|
28
|
+
* Metadata details and default values are kept when omitted.
|
|
29
|
+
*/
|
|
30
|
+
export type DeviceModelUpdate = {
|
|
31
|
+
defaultMetadata?: JSONObject;
|
|
32
|
+
metadataDetails?: MetadataDetails;
|
|
33
|
+
metadataMappings: MetadataMappings;
|
|
34
|
+
};
|
|
10
35
|
export declare class ModelService extends BaseService {
|
|
11
36
|
readonly logger: KuzzleLogger;
|
|
12
37
|
constructor(plugin: DeviceManagerPlugin, logger: KuzzleLogger);
|
|
@@ -14,51 +39,47 @@ export declare class ModelService extends BaseService {
|
|
|
14
39
|
private checkModelsConflicts;
|
|
15
40
|
private checkDefaultValues;
|
|
16
41
|
private checkGroupAffinity;
|
|
17
|
-
writeAsset(
|
|
42
|
+
writeAsset(tenantClasses: string[], model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures, tooltipModels: TooltipModels, locales: {
|
|
18
43
|
[valueName: string]: LocaleDetails;
|
|
19
|
-
},
|
|
44
|
+
}, indexes?: string[], icon?: string): Promise<KDocument<AssetModelContent>>;
|
|
20
45
|
writeDevice(model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: NamedMeasures, icon?: string): Promise<KDocument<DeviceModelContent>>;
|
|
21
|
-
writeGroup(
|
|
46
|
+
writeGroup(tenantClasses: string[], model: string, affinity: JSONObject, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, icon?: string, locales?: {
|
|
22
47
|
[valueName: string]: LocaleDetails;
|
|
23
48
|
}): Promise<KDocument<GroupModelContent>>;
|
|
24
49
|
writeMeasure(type: string, valuesMappings: JSONObject, validationSchema?: SchemaObject, valuesDetails?: MeasureValuesDetails, locales?: {
|
|
25
50
|
[valueName: string]: LocaleDetails;
|
|
26
|
-
},
|
|
51
|
+
}, indexes?: string[], icon?: string): Promise<KDocument<MeasureModelContent>>;
|
|
27
52
|
deleteAsset(_id: string): Promise<void>;
|
|
28
53
|
deleteDevice(_id: string): Promise<void>;
|
|
29
54
|
deleteGroup(_id: string): Promise<void>;
|
|
30
55
|
deleteMeasure(_id: string): Promise<void>;
|
|
31
56
|
/**
|
|
32
|
-
* List all asset models regardless of
|
|
57
|
+
* List all asset models regardless of tenant class scope.
|
|
33
58
|
* Used for super admin global view.
|
|
34
59
|
*/
|
|
35
60
|
listAllAssets(): Promise<KDocument<AssetModelContent>[]>;
|
|
36
61
|
/**
|
|
37
62
|
* Check if an engine (tenant) exists by its ID.
|
|
38
63
|
*/
|
|
39
|
-
engineExists(
|
|
40
|
-
/**
|
|
41
|
-
* Check if the requesting user has access to an engine.
|
|
42
|
-
*/
|
|
43
|
-
userHasEngineAccess(request: KuzzleRequest, engineId: string): Promise<boolean>;
|
|
64
|
+
engineExists(index: string): Promise<boolean>;
|
|
44
65
|
/**
|
|
45
|
-
* Find
|
|
66
|
+
* Find tenant classes that don't exist.
|
|
46
67
|
*/
|
|
47
|
-
|
|
48
|
-
listAsset(
|
|
68
|
+
findInvalidTenantClasses(tenantClasses: string[]): Promise<string[]>;
|
|
69
|
+
listAsset(tenantClasses: string[], index?: string): Promise<KDocument<AssetModelContent>[]>;
|
|
49
70
|
listDevices(): Promise<KDocument<DeviceModelContent>[]>;
|
|
50
|
-
listGroups(
|
|
51
|
-
listMeasures(
|
|
52
|
-
searchAssets(
|
|
71
|
+
listGroups(tenantClasses: string[]): Promise<KDocument<GroupModelContent>[]>;
|
|
72
|
+
listMeasures(index?: string): Promise<KDocument<MeasureModelContent>[]>;
|
|
73
|
+
searchAssets(tenantClasses: string[], index: string | undefined, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<AssetModelContent>>>;
|
|
53
74
|
searchDevices(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<DeviceModelContent>>>;
|
|
54
|
-
searchGroups(
|
|
55
|
-
searchMeasures(
|
|
75
|
+
searchGroups(tenantClasses: string[], searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<GroupModelContent>>>;
|
|
76
|
+
searchMeasures(index: string | undefined, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<MeasureModelContent>>>;
|
|
56
77
|
assetExists(model: string): Promise<boolean>;
|
|
57
78
|
deviceExists(model: string): Promise<boolean>;
|
|
58
|
-
getAsset(
|
|
79
|
+
getAsset(tenantClasses: string[], index: string | undefined, model: string): Promise<KDocument<AssetModelContent>>;
|
|
59
80
|
getDevice(model: string): Promise<KDocument<DeviceModelContent>>;
|
|
60
81
|
getGroup(model: string): Promise<KDocument<GroupModelContent>>;
|
|
61
|
-
getMeasure(type: string,
|
|
82
|
+
getMeasure(type: string, index?: string): Promise<KDocument<MeasureModelContent>>;
|
|
62
83
|
/**
|
|
63
84
|
* Checks that creating/updating a measure model does not shadow an existing
|
|
64
85
|
* one at a different scope (global vs tenant-scoped).
|
|
@@ -67,7 +88,84 @@ export declare class ModelService extends BaseService {
|
|
|
67
88
|
/**
|
|
68
89
|
* Update an asset model
|
|
69
90
|
*/
|
|
70
|
-
updateAsset(
|
|
91
|
+
updateAsset(tenantClasses: string[], index: string | undefined, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, locales: {
|
|
71
92
|
[valueName: string]: LocaleDetails;
|
|
72
93
|
}, icon: string | undefined, request: KuzzleRequest): Promise<KDocument<AssetModelContent>>;
|
|
94
|
+
/**
|
|
95
|
+
* Adds metadata of the metadata referential to a device model.
|
|
96
|
+
*
|
|
97
|
+
* Device models are additive only from the API: every existing metadata must be kept unchanged,
|
|
98
|
+
* new metadata must come from the referential. Metadata details and default values can change.
|
|
99
|
+
* The engines mappings are updated and the devices get the new metadata with their default value.
|
|
100
|
+
*
|
|
101
|
+
* @throws BadRequestError if an existing metadata is missing or changed, or a new one is inline
|
|
102
|
+
* @throws MappingsConflictsError if the new metadata conflict with the existing mappings
|
|
103
|
+
*/
|
|
104
|
+
updateDevice(model: string, { defaultMetadata, metadataDetails, metadataMappings }: DeviceModelUpdate): Promise<KDocument<DeviceModelContent>>;
|
|
105
|
+
/**
|
|
106
|
+
* Returns the group model available for the given tenant classes:
|
|
107
|
+
* a model of these classes first, then a commons model.
|
|
108
|
+
*
|
|
109
|
+
* @throws NotFoundError if no group model with this name is available
|
|
110
|
+
*/
|
|
111
|
+
private getScopedGroup;
|
|
112
|
+
/**
|
|
113
|
+
* Updates a group model, keeping its scope.
|
|
114
|
+
* Affinity and icon are kept when omitted.
|
|
115
|
+
*
|
|
116
|
+
* The engines mappings are updated and the groups of the model are refreshed.
|
|
117
|
+
*
|
|
118
|
+
* @throws MappingsConflictsError if the new mappings conflict with the existing ones
|
|
119
|
+
*/
|
|
120
|
+
updateGroup(tenantClasses: string[], model: string, { affinity, defaultMetadata, icon, locales, metadataDetails, metadataGroups, metadataMappings, }: GroupModelUpdate): Promise<KDocument<GroupModelContent>>;
|
|
121
|
+
/**
|
|
122
|
+
* Validates the metadata of a model written through the API against the metadata referential
|
|
123
|
+
* and enriches the details and default values of the metadata coming from it
|
|
124
|
+
*/
|
|
125
|
+
private resolveMetadata;
|
|
126
|
+
/**
|
|
127
|
+
* Resolves the referential metadata of stored models, to be returned by the API
|
|
128
|
+
*/
|
|
129
|
+
resolveModels<D extends {
|
|
130
|
+
_source: MetadataModelContent;
|
|
131
|
+
}>(documents: D[]): Promise<D[]>;
|
|
132
|
+
getMetadataReferential(): Promise<MetadataReferential>;
|
|
133
|
+
/**
|
|
134
|
+
* Creates a metadata of the metadata referential, or updates its details.
|
|
135
|
+
*
|
|
136
|
+
* The mappings of a new metadata are merged into the assets, devices and groups collections
|
|
137
|
+
* of every engine. They cannot be modified afterwards: only the locales, editor hint,
|
|
138
|
+
* default value and icon of an existing metadata can change. These are copied into the models
|
|
139
|
+
* using the metadata when they are written, the existing models are not modified.
|
|
140
|
+
*
|
|
141
|
+
* @throws BadRequestError if the mappings of an existing metadata are modified
|
|
142
|
+
* @throws MappingsConflictsError if the new metadata conflicts with an inline metadata of a model
|
|
143
|
+
* or with the actual mappings of an engine collection
|
|
144
|
+
*/
|
|
145
|
+
writeMetadata(name: string, definition: MetadataReferentialEntry): Promise<MetadataReferential>;
|
|
146
|
+
/**
|
|
147
|
+
* Deletes a metadata of the metadata referential.
|
|
148
|
+
* Its mappings stay in the engines collections, Elasticsearch cannot remove them.
|
|
149
|
+
*
|
|
150
|
+
* @throws BadRequestError if a model still uses the metadata
|
|
151
|
+
*/
|
|
152
|
+
deleteMetadata(name: string): Promise<MetadataReferential>;
|
|
153
|
+
/**
|
|
154
|
+
* With the referentialOnly option, rejects the inline metadata a model write adds.
|
|
155
|
+
* The inline metadata already defined by the stored model are kept (legacy).
|
|
156
|
+
*
|
|
157
|
+
* @throws BadRequestError if new inline metadata are added
|
|
158
|
+
*/
|
|
159
|
+
private checkReferentialOnly;
|
|
160
|
+
/**
|
|
161
|
+
* Updates the engines collections. If Elasticsearch rejects the new mappings, the model is
|
|
162
|
+
* restored to its previous version (or deleted if it is new), otherwise every next engines
|
|
163
|
+
* update would fail on it.
|
|
164
|
+
*/
|
|
165
|
+
private updateEnginesOrRestore;
|
|
166
|
+
private getStoredModel;
|
|
167
|
+
/**
|
|
168
|
+
* @throws BadRequestError if the metadata is registered from code
|
|
169
|
+
*/
|
|
170
|
+
private checkUnmanagedMetadata;
|
|
73
171
|
}
|
|
@@ -36,3 +36,26 @@ export declare function getGroupConflicts(measures: GroupModelContent[], additio
|
|
|
36
36
|
* @returns An array of ConflictChunk between current measures and the new measure
|
|
37
37
|
*/
|
|
38
38
|
export declare function getMeasureConflicts(measures: MeasureModelContent[], additional: MeasureModelContent): ConflictChunk[];
|
|
39
|
+
/**
|
|
40
|
+
* Find every conflicts between two sets of fields mappings (name => field mappings),
|
|
41
|
+
* e.g. metadata mappings or the metadata properties of an ES collection.
|
|
42
|
+
*
|
|
43
|
+
* Unlike findConflicts, a field defined with a type on one side and with properties on the other
|
|
44
|
+
* is a conflict, Elasticsearch cannot change a field from a value to an object or the opposite.
|
|
45
|
+
* Fields defined on one side only are not conflicts.
|
|
46
|
+
*
|
|
47
|
+
* @param currentMappings The current fields mappings
|
|
48
|
+
* @param newMappings The new fields mappings
|
|
49
|
+
* @param basePath Optional path to be added before conflicts paths
|
|
50
|
+
* @returns An array of MappingsConflict
|
|
51
|
+
*/
|
|
52
|
+
export declare function findMappingsConflicts(currentMappings: any, newMappings: any, basePath?: string): MappingsConflict[];
|
|
53
|
+
/**
|
|
54
|
+
* Find every conflicts between two objects.
|
|
55
|
+
* WARNING: "undefined" type of conflicts are not registered
|
|
56
|
+
* @param sourceObject The source object used to compare
|
|
57
|
+
* @param objectToCompare The target object to compare to
|
|
58
|
+
* @param basePath Optional path to be added before conflicts paths
|
|
59
|
+
* @returns An array of MappingsConflict
|
|
60
|
+
*/
|
|
61
|
+
export declare function findConflicts(sourceObject: any, objectToCompare: any, basePath?: string): MappingsConflict[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ControllerDefinition, KuzzleRequest } from "kuzzle";
|
|
2
2
|
import { ModelService } from "./ModelService";
|
|
3
|
-
import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, ApiModelUpdateAssetResult, ApiModelDeleteAssetResult, ApiModelDeleteDeviceResult, ApiModelDeleteMeasureResult, ApiModelListAssetsResult, ApiModelListDevicesResult, ApiModelListMeasuresResult, ApiModelGetAssetResult, ApiModelGetDeviceResult, ApiModelGetMeasureResult, ApiModelSearchAssetsResult, ApiModelSearchDevicesResult, ApiModelSearchMeasuresResult, ApiModelDeleteGroupResult, ApiModelGetGroupResult, ApiModelListGroupsResult, ApiModelSearchGroupsResult, ApiModelWriteGroupResult } from "./types/ModelApi";
|
|
3
|
+
import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, ApiModelUpdateAssetResult, ApiModelDeleteAssetResult, ApiModelDeleteDeviceResult, ApiModelDeleteMeasureResult, ApiModelListAssetsResult, ApiModelListDevicesResult, ApiModelListMeasuresResult, ApiModelGetAssetResult, ApiModelGetDeviceResult, ApiModelGetMeasureResult, ApiModelSearchAssetsResult, ApiModelSearchDevicesResult, ApiModelSearchMeasuresResult, ApiModelDeleteGroupResult, ApiModelGetGroupResult, ApiModelListGroupsResult, ApiModelSearchGroupsResult, ApiModelWriteGroupResult, ApiModelUpdateGroupResult, ApiModelUpdateDeviceResult, ApiModelGetMetadataReferentialResult, ApiModelWriteMetadataResult, ApiModelDeleteMetadataResult } from "./types/ModelApi";
|
|
4
4
|
import { KuzzleLogger } from "kuzzle-logger";
|
|
5
5
|
export declare class ModelsController {
|
|
6
6
|
private modelService;
|
|
@@ -20,7 +20,7 @@ export declare class ModelsController {
|
|
|
20
20
|
deleteGroup(request: KuzzleRequest): Promise<ApiModelDeleteGroupResult>;
|
|
21
21
|
deleteMeasure(request: KuzzleRequest): Promise<ApiModelDeleteMeasureResult>;
|
|
22
22
|
listAssets(request: KuzzleRequest): Promise<ApiModelListAssetsResult>;
|
|
23
|
-
listDevices(): Promise<ApiModelListDevicesResult>;
|
|
23
|
+
listDevices(request: KuzzleRequest): Promise<ApiModelListDevicesResult>;
|
|
24
24
|
listGroups(request: KuzzleRequest): Promise<ApiModelListGroupsResult>;
|
|
25
25
|
listMeasures(request: KuzzleRequest): Promise<ApiModelListMeasuresResult>;
|
|
26
26
|
searchAssets(request: KuzzleRequest): Promise<ApiModelSearchAssetsResult>;
|
|
@@ -28,4 +28,13 @@ export declare class ModelsController {
|
|
|
28
28
|
searchGroups(request: KuzzleRequest): Promise<ApiModelSearchGroupsResult>;
|
|
29
29
|
searchMeasures(request: KuzzleRequest): Promise<ApiModelSearchMeasuresResult>;
|
|
30
30
|
updateAsset(request: KuzzleRequest): Promise<ApiModelUpdateAssetResult>;
|
|
31
|
+
updateDevice(request: KuzzleRequest): Promise<ApiModelUpdateDeviceResult>;
|
|
32
|
+
updateGroup(request: KuzzleRequest): Promise<ApiModelUpdateGroupResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Resolves the referential metadata of models, unless the rawModel flag is set
|
|
35
|
+
*/
|
|
36
|
+
private resolveModels;
|
|
37
|
+
getMetadataReferential(): Promise<ApiModelGetMetadataReferentialResult>;
|
|
38
|
+
writeMetadata(request: KuzzleRequest): Promise<ApiModelWriteMetadataResult>;
|
|
39
|
+
deleteMetadata(request: KuzzleRequest): Promise<ApiModelDeleteMetadataResult>;
|
|
31
40
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DeviceManagerPlugin } from "../plugin";
|
|
2
2
|
import { NamedMeasures } from "../decoder";
|
|
3
3
|
import { MeasureDefinition } from "../measure";
|
|
4
|
-
import { GroupAffinity, LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
|
|
4
|
+
import { GroupAffinity, LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, MetadataReferentialEntry, TooltipModels } from "./types/ModelContent";
|
|
5
5
|
import { JSONObject } from "kuzzle-sdk";
|
|
6
6
|
export declare class ModelsRegister {
|
|
7
7
|
private config;
|
|
@@ -10,14 +10,46 @@ export declare class ModelsRegister {
|
|
|
10
10
|
private deviceModels;
|
|
11
11
|
private groupModels;
|
|
12
12
|
private measureModels;
|
|
13
|
+
private metadataReferential;
|
|
13
14
|
private logger;
|
|
14
15
|
private get sdk();
|
|
15
16
|
init(plugin: DeviceManagerPlugin): void;
|
|
16
17
|
loadModels(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Merges the metadata registered from code over the stored metadata referential and saves it.
|
|
20
|
+
* Metadata added through the API are kept, the details of metadata registered from code win.
|
|
21
|
+
*
|
|
22
|
+
* @throws PluginImplementationError if the mappings of a stored metadata are modified, or if a new
|
|
23
|
+
* metadata conflicts with the stored models or the engines collections mappings
|
|
24
|
+
*/
|
|
25
|
+
private loadMetadataReferential;
|
|
26
|
+
/**
|
|
27
|
+
* Checks the metadata registered from code that are not in the stored referential yet
|
|
28
|
+
* against the inline metadata of the stored models and the engines collections mappings
|
|
29
|
+
*
|
|
30
|
+
* @throws PluginImplementationError on a conflict
|
|
31
|
+
*/
|
|
32
|
+
private checkNewMetadata;
|
|
33
|
+
/**
|
|
34
|
+
* Validates the metadata of models registered from code against the metadata referential
|
|
35
|
+
* and enriches the details and default values of the metadata coming from it
|
|
36
|
+
*/
|
|
37
|
+
private resolveModels;
|
|
38
|
+
/**
|
|
39
|
+
* Registers a metadata in the metadata referential.
|
|
40
|
+
* Asset, device and group models can then use it with `{ referential: true }` in their metadataMappings.
|
|
41
|
+
* Its mappings cannot be modified once loaded, they are merged into the engines collections.
|
|
42
|
+
* Registering again an identical definition is allowed, so several modules can share a metadata.
|
|
43
|
+
*
|
|
44
|
+
* @param name - Name of the metadata
|
|
45
|
+
* @param definition - Mappings, default translations, editor hint, default value and icon of the metadata
|
|
46
|
+
* @throws PluginImplementationError if the metadata is invalid or already registered with another definition
|
|
47
|
+
*/
|
|
48
|
+
registerMetadata(name: string, definition: MetadataReferentialEntry): void;
|
|
17
49
|
/**
|
|
18
50
|
* Registers an asset model.
|
|
19
51
|
*
|
|
20
|
-
* @param
|
|
52
|
+
* @param tenantClasses - The tenant class names.
|
|
21
53
|
* @param model - The name of the asset model, which must be in PascalCase.
|
|
22
54
|
* @param measures - The measures associated with this asset model.
|
|
23
55
|
* @param metadataMappings - The metadata mappings for the model, defaults to an empty object.
|
|
@@ -28,7 +60,7 @@ export declare class ModelsRegister {
|
|
|
28
60
|
* @param icon - Optional icon representing the model.
|
|
29
61
|
* @throws PluginImplementationError if the model name is not in PascalCase.
|
|
30
62
|
*/
|
|
31
|
-
registerAsset(
|
|
63
|
+
registerAsset(tenantClasses: string[], model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, tooltipModels?: TooltipModels, locales?: {
|
|
32
64
|
[valueName: string]: LocaleDetails;
|
|
33
65
|
}, icon?: string): void;
|
|
34
66
|
/**
|
|
@@ -48,7 +80,7 @@ export declare class ModelsRegister {
|
|
|
48
80
|
* Registers a group model.
|
|
49
81
|
*
|
|
50
82
|
*
|
|
51
|
-
* @param
|
|
83
|
+
* @param tenantClasses - The tenant class names.
|
|
52
84
|
* @param model - The name of the group model, which must be in PascalCase.
|
|
53
85
|
* @param affinity - The type of object accepted and their model affinity.
|
|
54
86
|
* @param metadataMappings - The metadata mappings for the model, defaults to an empty object.
|
|
@@ -59,7 +91,7 @@ export declare class ModelsRegister {
|
|
|
59
91
|
* @param locales - Optional translations specific to the model.
|
|
60
92
|
* @throws PluginImplementationError if the model name is not in PascalCase.
|
|
61
93
|
*/
|
|
62
|
-
registerGroup(
|
|
94
|
+
registerGroup(tenantClasses: string[], model: string, affinity: GroupAffinity, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, icon?: string, locales?: {
|
|
63
95
|
[valueName: string]: LocaleDetails;
|
|
64
96
|
}): void;
|
|
65
97
|
registerMeasure(type: string, measureDefinition: MeasureDefinition): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
|
|
2
|
-
import { AssetModelContent, DeviceModelContent, GroupAffinity, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
|
|
2
|
+
import { AssetModelContent, DeviceModelContent, GroupAffinity, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, MetadataReferential, MetadataReferentialEntry, TooltipModels } from "./ModelContent";
|
|
3
3
|
import { SchemaObject } from "ajv";
|
|
4
4
|
import { MeasureValuesDetails } from "../../measure/types/MeasureDefinition";
|
|
5
5
|
interface ModelsControllerRequest {
|
|
@@ -8,30 +8,45 @@ interface ModelsControllerRequest {
|
|
|
8
8
|
export interface ApiModelGetAssetRequest extends ModelsControllerRequest {
|
|
9
9
|
action: "getAsset";
|
|
10
10
|
model: string;
|
|
11
|
-
|
|
11
|
+
tenantClasses: string[];
|
|
12
|
+
/**
|
|
13
|
+
* Returns the stored model, without resolving its referential metadata
|
|
14
|
+
*/
|
|
15
|
+
rawModel?: boolean;
|
|
12
16
|
}
|
|
13
17
|
export type ApiModelGetAssetResult = KDocument<AssetModelContent>;
|
|
14
18
|
export interface ApiModelGetDeviceRequest extends ModelsControllerRequest {
|
|
15
19
|
action: "getDevice";
|
|
16
20
|
model: string;
|
|
21
|
+
/**
|
|
22
|
+
* Returns the stored model, without resolving its referential metadata
|
|
23
|
+
*/
|
|
24
|
+
rawModel?: boolean;
|
|
17
25
|
}
|
|
18
26
|
export type ApiModelGetDeviceResult = KDocument<DeviceModelContent>;
|
|
19
27
|
export interface ApiModelGetGroupRequest extends ModelsControllerRequest {
|
|
20
28
|
action: "getGroup";
|
|
21
29
|
model: string;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the stored model, without resolving its referential metadata
|
|
32
|
+
*/
|
|
33
|
+
rawModel?: boolean;
|
|
22
34
|
}
|
|
23
35
|
export type ApiModelGetGroupResult = KDocument<GroupModelContent>;
|
|
24
36
|
export interface ApiModelGetMeasureRequest extends ModelsControllerRequest {
|
|
25
37
|
action: "getMeasure";
|
|
26
38
|
type: string;
|
|
27
|
-
|
|
39
|
+
index?: string;
|
|
28
40
|
}
|
|
29
41
|
export type ApiModelGetMeasureResult = KDocument<MeasureModelContent>;
|
|
30
42
|
export interface ApiModelWriteAssetRequest extends ModelsControllerRequest {
|
|
31
43
|
action: "writeAsset";
|
|
32
44
|
body: {
|
|
33
|
-
|
|
34
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Mutually exclusive with `indexes`
|
|
47
|
+
*/
|
|
48
|
+
tenantClasses?: string[];
|
|
49
|
+
indexes?: string[];
|
|
35
50
|
model: string;
|
|
36
51
|
icon?: string;
|
|
37
52
|
metadataDetails?: MetadataDetails;
|
|
@@ -63,7 +78,7 @@ export interface ApiModelWriteGroupRequest extends ModelsControllerRequest {
|
|
|
63
78
|
action: "writeGroup";
|
|
64
79
|
body: {
|
|
65
80
|
affinity: GroupAffinity;
|
|
66
|
-
|
|
81
|
+
tenantClasses: string[];
|
|
67
82
|
model: string;
|
|
68
83
|
icon?: string;
|
|
69
84
|
metadataDetails?: MetadataDetails;
|
|
@@ -76,11 +91,48 @@ export interface ApiModelWriteGroupRequest extends ModelsControllerRequest {
|
|
|
76
91
|
};
|
|
77
92
|
}
|
|
78
93
|
export type ApiModelWriteGroupResult = KDocument<GroupModelContent>;
|
|
94
|
+
export interface ApiModelUpdateDeviceRequest extends ModelsControllerRequest {
|
|
95
|
+
action: "updateDevice";
|
|
96
|
+
model: string;
|
|
97
|
+
body: {
|
|
98
|
+
/**
|
|
99
|
+
* Full set of metadata mappings: the existing ones, unchanged, and the new ones,
|
|
100
|
+
* which must be metadata of the referential (`{ referential: true }`)
|
|
101
|
+
*/
|
|
102
|
+
metadataMappings: MetadataMappings;
|
|
103
|
+
/**
|
|
104
|
+
* Replaces the metadata details when present
|
|
105
|
+
*/
|
|
106
|
+
metadataDetails?: MetadataDetails;
|
|
107
|
+
/**
|
|
108
|
+
* Replaces the default values when present
|
|
109
|
+
*/
|
|
110
|
+
defaultValues?: JSONObject;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export type ApiModelUpdateDeviceResult = KDocument<DeviceModelContent>;
|
|
114
|
+
export interface ApiModelUpdateGroupRequest extends ModelsControllerRequest {
|
|
115
|
+
action: "updateGroup";
|
|
116
|
+
tenantClasses?: string[];
|
|
117
|
+
model: string;
|
|
118
|
+
body: {
|
|
119
|
+
affinity?: GroupAffinity;
|
|
120
|
+
icon?: string;
|
|
121
|
+
metadataDetails?: MetadataDetails;
|
|
122
|
+
metadataGroups?: MetadataGroups;
|
|
123
|
+
metadataMappings?: MetadataMappings;
|
|
124
|
+
defaultValues?: JSONObject;
|
|
125
|
+
locales?: {
|
|
126
|
+
[valueName: string]: LocaleDetails;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export type ApiModelUpdateGroupResult = KDocument<GroupModelContent>;
|
|
79
131
|
export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
|
|
80
132
|
action: "writeMeasure";
|
|
81
133
|
body: {
|
|
82
134
|
type: string;
|
|
83
|
-
|
|
135
|
+
indexes?: string[];
|
|
84
136
|
icon?: string;
|
|
85
137
|
locales?: {
|
|
86
138
|
[valueName: string]: LocaleDetails;
|
|
@@ -93,7 +145,7 @@ export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
|
|
|
93
145
|
export type ApiModelWriteMeasureResult = KDocument<MeasureModelContent>;
|
|
94
146
|
export interface ApiModelUpdateAssetRequest extends ModelsControllerRequest {
|
|
95
147
|
action: "updateAsset";
|
|
96
|
-
|
|
148
|
+
tenantClasses: string[];
|
|
97
149
|
model: string;
|
|
98
150
|
body: {
|
|
99
151
|
icon?: string;
|
|
@@ -131,7 +183,11 @@ export interface ApiModelDeleteMeasureRequest extends ModelsControllerRequest {
|
|
|
131
183
|
export type ApiModelDeleteMeasureResult = void;
|
|
132
184
|
export interface ApiModelListAssetsRequest extends ModelsControllerRequest {
|
|
133
185
|
action: "listAssets";
|
|
134
|
-
|
|
186
|
+
tenantClasses: string[];
|
|
187
|
+
/**
|
|
188
|
+
* Returns the stored model, without resolving its referential metadata
|
|
189
|
+
*/
|
|
190
|
+
rawModel?: boolean;
|
|
135
191
|
}
|
|
136
192
|
export type ApiModelListAssetsResult = {
|
|
137
193
|
models: KDocument<AssetModelContent>[];
|
|
@@ -139,6 +195,10 @@ export type ApiModelListAssetsResult = {
|
|
|
139
195
|
};
|
|
140
196
|
export interface ApiModelListDevicesRequest extends ModelsControllerRequest {
|
|
141
197
|
action: "listDevices";
|
|
198
|
+
/**
|
|
199
|
+
* Returns the stored model, without resolving its referential metadata
|
|
200
|
+
*/
|
|
201
|
+
rawModel?: boolean;
|
|
142
202
|
}
|
|
143
203
|
export type ApiModelListDevicesResult = {
|
|
144
204
|
models: KDocument<DeviceModelContent>[];
|
|
@@ -146,7 +206,11 @@ export type ApiModelListDevicesResult = {
|
|
|
146
206
|
};
|
|
147
207
|
export interface ApiModelListGroupsRequest extends ModelsControllerRequest {
|
|
148
208
|
action: "listGroups";
|
|
149
|
-
|
|
209
|
+
tenantClasses: string[];
|
|
210
|
+
/**
|
|
211
|
+
* Returns the stored model, without resolving its referential metadata
|
|
212
|
+
*/
|
|
213
|
+
rawModel?: boolean;
|
|
150
214
|
}
|
|
151
215
|
export type ApiModelListGroupsResult = {
|
|
152
216
|
models: KDocument<GroupModelContent>[];
|
|
@@ -154,7 +218,7 @@ export type ApiModelListGroupsResult = {
|
|
|
154
218
|
};
|
|
155
219
|
export interface ApiModelListMeasuresRequest extends ModelsControllerRequest {
|
|
156
220
|
action: "listMeasures";
|
|
157
|
-
|
|
221
|
+
index?: string;
|
|
158
222
|
}
|
|
159
223
|
export type ApiModelListMeasuresResult = {
|
|
160
224
|
models: KDocument<MeasureModelContent>[];
|
|
@@ -162,7 +226,11 @@ export type ApiModelListMeasuresResult = {
|
|
|
162
226
|
};
|
|
163
227
|
export interface ApiModelSearchAssetsRequest extends ModelsControllerRequest {
|
|
164
228
|
action: "searchAssets";
|
|
165
|
-
|
|
229
|
+
tenantClasses: string[];
|
|
230
|
+
/**
|
|
231
|
+
* Returns the stored model, without resolving its referential metadata
|
|
232
|
+
*/
|
|
233
|
+
rawModel?: boolean;
|
|
166
234
|
from?: number;
|
|
167
235
|
size?: number;
|
|
168
236
|
scrollTTL?: string;
|
|
@@ -171,6 +239,10 @@ export interface ApiModelSearchAssetsRequest extends ModelsControllerRequest {
|
|
|
171
239
|
export type ApiModelSearchAssetsResult = SearchResult<KHit<AssetModelContent>>;
|
|
172
240
|
export interface ApiModelSearchDevicesRequest extends ModelsControllerRequest {
|
|
173
241
|
action: "searchDevices";
|
|
242
|
+
/**
|
|
243
|
+
* Returns the stored model, without resolving its referential metadata
|
|
244
|
+
*/
|
|
245
|
+
rawModel?: boolean;
|
|
174
246
|
from?: number;
|
|
175
247
|
size?: number;
|
|
176
248
|
scrollTTL?: string;
|
|
@@ -179,7 +251,11 @@ export interface ApiModelSearchDevicesRequest extends ModelsControllerRequest {
|
|
|
179
251
|
export type ApiModelSearchDevicesResult = SearchResult<KHit<DeviceModelContent>>;
|
|
180
252
|
export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
|
|
181
253
|
action: "searchGroups";
|
|
182
|
-
|
|
254
|
+
tenantClasses: string[];
|
|
255
|
+
/**
|
|
256
|
+
* Returns the stored model, without resolving its referential metadata
|
|
257
|
+
*/
|
|
258
|
+
rawModel?: boolean;
|
|
183
259
|
from?: number;
|
|
184
260
|
size?: number;
|
|
185
261
|
scrollTTL?: string;
|
|
@@ -188,11 +264,26 @@ export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
|
|
|
188
264
|
export type ApiModelSearchGroupsResult = SearchResult<KHit<GroupModelContent>>;
|
|
189
265
|
export interface ApiModelSearchMeasuresRequest extends ModelsControllerRequest {
|
|
190
266
|
action: "searchMeasures";
|
|
191
|
-
|
|
267
|
+
index?: string;
|
|
192
268
|
from?: number;
|
|
193
269
|
size?: number;
|
|
194
270
|
scrollTTL?: string;
|
|
195
271
|
body?: JSONObject;
|
|
196
272
|
}
|
|
197
273
|
export type ApiModelSearchMeasuresResult = SearchResult<KHit<MeasureModelContent>>;
|
|
274
|
+
export interface ApiModelGetMetadataReferentialRequest extends ModelsControllerRequest {
|
|
275
|
+
action: "getMetadataReferential";
|
|
276
|
+
}
|
|
277
|
+
export type ApiModelGetMetadataReferentialResult = MetadataReferential;
|
|
278
|
+
export interface ApiModelWriteMetadataRequest extends ModelsControllerRequest {
|
|
279
|
+
action: "writeMetadata";
|
|
280
|
+
name: string;
|
|
281
|
+
body: MetadataReferentialEntry;
|
|
282
|
+
}
|
|
283
|
+
export type ApiModelWriteMetadataResult = MetadataReferential;
|
|
284
|
+
export interface ApiModelDeleteMetadataRequest extends ModelsControllerRequest {
|
|
285
|
+
action: "deleteMetadata";
|
|
286
|
+
name: string;
|
|
287
|
+
}
|
|
288
|
+
export type ApiModelDeleteMetadataResult = MetadataReferential;
|
|
198
289
|
export {};
|