Skip to content

Commit

Permalink
feat: add simulation run data API (#1098)
Browse files Browse the repository at this point in the history
* feat: add simulation run data API

* fix: fix optional types
  • Loading branch information
bkuzma committed Apr 30, 2024
1 parent 051f103 commit 8808338
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 0 deletions.
35 changes: 35 additions & 0 deletions packages/alpha/src/__tests__/api/simulationRunDataApi.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright 2023 Cognite AS
import CogniteClientAlpha from '../../cogniteClient';
import { setupLoggedInClient } from '../testUtils';

const SHOULD_RUN_TESTS = process.env.RUN_SDK_SIMINT_TESTS == 'true';

const describeIf = SHOULD_RUN_TESTS ? describe : describe.skip;

describeIf('simulation run data api', () => {
const client: CogniteClientAlpha = setupLoggedInClient();

test('list simulation run data', async () => {
const runs = await client.simulators.listRuns({
filter: {
simulatorName: 'DWSIM',
status: 'success',
},
});

const runId = runs.items[0].id;

const runData = await client.simulators.listRunData([
{
runId,
},
]);

expect(runData).toBeDefined();
expect(runData.length).toBeGreaterThan(0);

const item = runData[0];

expect(item.runId).toBe(runId);
});
});
16 changes: 16 additions & 0 deletions packages/alpha/src/api/simulators/simulationRunDataApi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright 2023 Cognite AS

import { BaseResourceAPI, CDFHttpClient, MetadataMap } from '@cognite/sdk-core';
import { SimulationRunData, SimulationRunId } from '../../types';

export class SimulationRunDataAPI extends BaseResourceAPI<SimulationRunData> {
constructor(...args: [string, CDFHttpClient, MetadataMap]) {
super(...args);
}

public retrieve = async (ids: SimulationRunId[]) => {
const path = this.url('simulators/runs/data/list');

return this.retrieveEndpoint(ids, {}, path);
};
}
13 changes: 13 additions & 0 deletions packages/alpha/src/api/simulators/simulatorsApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ import {
SimulatorModelRevisionChange,
SimulatorRoutineRevisionCreate,
SimulatorRoutineRevisionslFilterQuery,
SimulationRunId,
} from '../../types';
import { IntegrationsAPI } from './integrationsApi';
import { SimulationRunsAPI } from './simulationRunsApi';
import { SimulationRunDataAPI } from './simulationRunDataApi';
import { ModelsAPI } from './modelsApi';
import { ModelRevisionsAPI } from './modelRevisionsApi';
import { RoutinesAPI } from './routinesApi';
Expand All @@ -36,6 +38,7 @@ import { LogsAPI } from './logsApi';
export class SimulatorsAPI extends BaseResourceAPI<Simulator> {
private integrationsApi: IntegrationsAPI;
private runsApi: SimulationRunsAPI;
private runDataApi: SimulationRunDataAPI;
private modelsApi: ModelsAPI;
private modelRevisionsApi: ModelRevisionsAPI;
private routinesApi: RoutinesAPI;
Expand Down Expand Up @@ -66,6 +69,12 @@ export class SimulatorsAPI extends BaseResourceAPI<Simulator> {
metadataMap
);

this.runDataApi = new SimulationRunDataAPI(
`${resourcePath}/runs/data`,
client,
metadataMap
);

this.modelsApi = new ModelsAPI(
`${resourcePath}/models`,
client,
Expand Down Expand Up @@ -127,6 +136,10 @@ export class SimulatorsAPI extends BaseResourceAPI<Simulator> {
return this.runsApi.list(filter);
};

public listRunData = async (ids: SimulationRunId[]) => {
return this.runDataApi.retrieve(ids);
};

public runSimulation = async (items: SimulationRunCreate[]) => {
return this.runsApi.run(items);
};
Expand Down
39 changes: 39 additions & 0 deletions packages/alpha/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,45 @@ export interface SimulationRun {
lastUpdatedTime: Date;
}

export type SimulationRunDataValueType =
| 'STRING'
| 'DOUBLE'
| 'STRING_ARRAY'
| 'DOUBLE_ARRAY';

export const SimulationRunDataValueType = {
STRING: 'STRING' as SimulationRunDataValueType,
DOUBLE: 'DOUBLE' as SimulationRunDataValueType,
STRING_ARRAY: 'STRING_ARRAY' as SimulationRunDataValueType,
DOUBLE_ARRAY: 'DOUBLE_ARRAY' as SimulationRunDataValueType,
};

export interface SimulationRunDataOutput {
referenceId: CogniteInternalId;
value: string | number | string[] | number[];
valueType: SimulationRunDataValueType;
unit?: {
name: string;
externalId?: CogniteExternalId;
};
simulatorObjectReference?: Record<string, string>;
timeseriesExternalId?: CogniteExternalId;
}

export interface SimulationRunDataInput extends SimulationRunDataOutput {
overridden?: boolean;
}

export interface SimulationRunId {
runId: CogniteInternalId;
}

export interface SimulationRunData {
runId: CogniteInternalId;
inputs: SimulationRunDataInput[];
outputs: SimulationRunDataOutput[];
}

export type SimulatorLogSeverityLevel =
| 'Debug'
| 'Information'
Expand Down

0 comments on commit 8808338

Please sign in to comment.