Skip to content

Commit

Permalink
feat: Add pagination support for Simulator resources (#397)
Browse files Browse the repository at this point in the history
* feat: Add pagination support for Simulator resources

* revert

* bump version

* fix test

* Update version

Co-authored-by: Ivan Polomani <[email protected]>

* pagination for runs

* cursor test

* cursor test

* test cursor

* set limit

---------

Co-authored-by: Ivan Polomani <[email protected]>
  • Loading branch information
lpereiracgn and polomani authored Sep 3, 2024
1 parent 7728107 commit 77b8971
Show file tree
Hide file tree
Showing 11 changed files with 54 additions and 36 deletions.
7 changes: 1 addition & 6 deletions CogniteSdk.Types/Alpha/Simulators/SimulationRunQuery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public enum SimulationRunType
/// <summary>
/// The Simulation run query class.
/// </summary>
public class SimulationRunQuery
public class SimulationRunQuery : CursorQueryBase
{
/// <summary>
/// Filter on assets with strict matching.
Expand All @@ -65,11 +65,6 @@ public class SimulationRunQuery
/// </summary>
public IEnumerable<SimulatorSortItem> Sort { get; set; }

/// <summary>
/// Limits the number of results to return.
/// </summary>
public int? Limit { get; set; }

/// <inheritdoc />
public override string ToString() => Stringable.ToString<SimulationRunQuery>(this);
}
Expand Down
2 changes: 1 addition & 1 deletion CogniteSdk.Types/Alpha/Simulators/SimulatorModelQuery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace CogniteSdk.Alpha
/// <summary>
/// The Simulator model class.
/// </summary>
public class SimulatorModelQuery
public class SimulatorModelQuery : CursorQueryBase
{
/// <summary>
/// Filter on simulators models.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,13 @@ public class SimulatorSortItem
/// <summary>
/// The Simulator model revision class.
/// </summary>
public class SimulatorModelRevisionQuery
public class SimulatorModelRevisionQuery : CursorQueryBase
{
/// <summary>
/// Filter on simulators model revisions.
/// </summary>
public SimulatorModelRevisionFilter Filter { get; set; }

/// <summary>
/// Limits the number of results to return.
/// </summary>
public int? Limit { get; set; }

/// <summary>
/// Sort order.
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion CogniteSdk.Types/Alpha/Simulators/SimulatorRoutineQuery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace CogniteSdk.Alpha
/// <summary>
/// The Simulation Routine query class.
/// </summary>
public class SimulatorRoutineQuery
public class SimulatorRoutineQuery : CursorQueryBase
{
/// <summary>
/// Filter on simulators with strict matching.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,13 @@ namespace CogniteSdk.Alpha
/// <summary>
/// The Simulation Routine Revision query class.
/// </summary>
public class SimulatorRoutineRevisionQuery
public class SimulatorRoutineRevisionQuery : CursorQueryBase
{
/// <summary>
/// Filter on simulators with strict matching.
/// </summary>
public SimulatorRoutineRevisionFilter Filter { get; set; }

/// <summary>
/// Limit the number of results.
/// </summary>
/// <value>Default to 100. Max is 1000.</value>
public int? Limit { get; set; }

/// <summary>
/// Sort order.
/// </summary>
Expand Down
10 changes: 5 additions & 5 deletions CogniteSdk/src/Resources/Alpha/Simulators.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public async Task<IEnumerable<SimulationRun>> CreateSimulationRunsAsync(IEnumera
/// <param name="query">Simulation run filter query</param>
/// <param name="token">Optional cancellation token</param>
/// <returns>All simulation runs in project</returns>
public async Task<IItemsWithoutCursor<SimulationRun>> ListSimulationRunsAsync(SimulationRunQuery query, CancellationToken token = default)
public async Task<IItemsWithCursor<SimulationRun>> ListSimulationRunsAsync(SimulationRunQuery query, CancellationToken token = default)
{
var req = Simulators.listSimulationRuns(query, GetContext(token));
return await RunAsync(req).ConfigureAwait(false);
Expand Down Expand Up @@ -151,7 +151,7 @@ public async Task<IEnumerable<SimulatorModel>> CreateSimulatorModelsAsync(IEnume
/// </summary>
/// <param name="query">The simulator model query to filter.</param>
/// <param name="token">Optional cancellation token</param>
public async Task<IItemsWithoutCursor<SimulatorModel>> ListSimulatorModelsAsync(SimulatorModelQuery query, CancellationToken token = default)
public async Task<IItemsWithCursor<SimulatorModel>> ListSimulatorModelsAsync(SimulatorModelQuery query, CancellationToken token = default)
{
var req = Simulators.listSimulatorModels(query, GetContext(token));
return await RunAsync(req).ConfigureAwait(false);
Expand Down Expand Up @@ -213,7 +213,7 @@ public async Task<IEnumerable<SimulatorModelRevision>> CreateSimulatorModelRevis
/// </summary>
/// <param name="query">The simulator model revision query to filter.</param>
/// <param name="token">Optional cancellation token</param>
public async Task<IItemsWithoutCursor<SimulatorModelRevision>> ListSimulatorModelRevisionsAsync(SimulatorModelRevisionQuery query, CancellationToken token = default)
public async Task<IItemsWithCursor<SimulatorModelRevision>> ListSimulatorModelRevisionsAsync(SimulatorModelRevisionQuery query, CancellationToken token = default)
{
var req = Simulators.listSimulatorModelRevisions(query, GetContext(token));
return await RunAsync(req).ConfigureAwait(false);
Expand Down Expand Up @@ -252,7 +252,7 @@ public async Task<IEnumerable<SimulatorModelRevision>> RetrieveSimulatorModelRev
/// </summary>
/// <param name="query">The simulator routine query to retrieve.</param>
/// <param name="token">Optional cancellation token</param>
public async Task<IItemsWithoutCursor<SimulatorRoutine>> ListSimulatorRoutinesAsync(SimulatorRoutineQuery query, CancellationToken token = default)
public async Task<IItemsWithCursor<SimulatorRoutine>> ListSimulatorRoutinesAsync(SimulatorRoutineQuery query, CancellationToken token = default)
{
var req = Simulators.listSimulatorRoutines(query, GetContext(token));
return await RunAsync(req).ConfigureAwait(false);
Expand Down Expand Up @@ -308,7 +308,7 @@ public async Task<IEnumerable<SimulatorRoutineRevision>> CreateSimulatorRoutineR
/// </summary>
/// <param name="query">The simulator routine revisions query to retrieve.</param>
/// <param name="token">Optional cancellation token</param>
public async Task<IItemsWithoutCursor<SimulatorRoutineRevision>> ListSimulatorRoutineRevisionsAsync(SimulatorRoutineRevisionQuery query, CancellationToken token = default)
public async Task<IItemsWithCursor<SimulatorRoutineRevision>> ListSimulatorRoutineRevisionsAsync(SimulatorRoutineRevisionQuery query, CancellationToken token = default)
{
var req = Simulators.listSimulatorRoutineRevisions(query, GetContext(token));
return await RunAsync(req).ConfigureAwait(false);
Expand Down
9 changes: 9 additions & 0 deletions CogniteSdk/test/fsharp/Alpha/SimulatorModels.fs
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,15 @@ let ``Create and list simulator model revisions is Ok`` () =
)
)

let! (modelRevisionListResCursor: IItemsWithCursor<SimulatorModelRevision>) =
writeClient.Alpha.Simulators.ListSimulatorModelRevisionsAsync(
new SimulatorModelRevisionQuery(
Limit = 1
)
)

test <@ isNull modelRevisionListResCursor.NextCursor |> not @>

let! modelRevisionRetrieveRes =
writeClient.Alpha.Simulators.RetrieveSimulatorModelRevisionsAsync(
[ new Identity(modelRevisionToCreate.ExternalId) ]
Expand Down
15 changes: 12 additions & 3 deletions CogniteSdk/test/fsharp/Alpha/SimulatorRoutines.fs
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,25 @@ let ``Create simulator routines is Ok`` () =
// Act
let! resRoutine = writeClient.Alpha.Simulators.CreateSimulatorRoutinesAsync([ routineToCreate ])

let! resList =
let! (resList: IItemsWithCursor<SimulatorRoutine>) =
writeClient.Alpha.Simulators.ListSimulatorRoutinesAsync(
new SimulatorRoutineQuery(
Filter = SimulatorRoutineFilter(ModelExternalIds = [ modelCreated.ExternalId ])
)
)

let! (resListCursor: IItemsWithCursor<SimulatorRoutine>) =
writeClient.Alpha.Simulators.ListSimulatorRoutinesAsync(
new SimulatorRoutineQuery(
Filter = SimulatorRoutineFilter(ModelExternalIds = [ modelCreated.ExternalId ]),
Limit = 1
)
)

test <@ isNull resListCursor.NextCursor |> not @>

let resListRoutine =
resList.Items |> Seq.find (fun item -> item.ExternalId = routineExternalId)
resList.Items |> Seq.find (fun (item: SimulatorRoutine) -> item.ExternalId = routineExternalId)

let! resDeleteRoutine =
writeClient.Alpha.Simulators.DeleteSimulatorRoutinesAsync([ new Identity(resListRoutine.Id) ])
Expand Down Expand Up @@ -183,7 +193,6 @@ let ``Create simulator routine revision is Ok`` () =
DataSampling =
SimulatorRoutineRevisionDataSampling(
Enabled = true,
ValidationWindow = 1,
SamplingWindow = 1,
Granularity = 1
),
Expand Down
18 changes: 17 additions & 1 deletion CogniteSdk/test/fsharp/Alpha/SimulatorRuns.fs
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ let ``Retrieve simulation runs is Ok`` () =
task {

// Arrange
let listQuery = SimulationRunQuery()
let listQuery: SimulationRunQuery = SimulationRunQuery()

let! listRes = writeClient.Alpha.Simulators.ListSimulationRunsAsync(listQuery)

Expand All @@ -172,6 +172,22 @@ let ``Retrieve simulation runs is Ok`` () =
test <@ simulationRunRetrieveRes.Status = SimulationRunStatus.success @>
}


[<Fact>]
[<Trait("resource", "simulationRuns")>]
[<Trait("api", "simulators")>]
let ``Retrieve simulation runs with cursor is Ok`` () =
task {

// Arrange
let listQuery: SimulationRunQuery = SimulationRunQuery(Limit = 1)

let! (listRes: IItemsWithCursor<SimulationRun>) = writeClient.Alpha.Simulators.ListSimulationRunsAsync(listQuery)

test <@ Seq.length listRes.Items > 0 @>
test <@ isNull listRes.NextCursor |> not @>
}

[<Fact>]
[<Trait("resource", "simulatorLogs")>]
[<Trait("api", "simulators")>]
Expand Down
10 changes: 5 additions & 5 deletions Oryx.Cognite/src/Alpha/Simulators.fs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ module Simulators =
let listSimulationRuns
(query: SimulationRunQuery)
(source: HttpHandler<unit>)
: HttpHandler<ItemsWithoutCursor<SimulationRun>> =
: HttpHandler<ItemsWithCursor<SimulationRun>> =
source
|> withLogMessage "simulators:listSimulationRuns"
|> withAlphaHeader
Expand Down Expand Up @@ -118,7 +118,7 @@ module Simulators =
let listSimulatorModels
(query: SimulatorModelQuery)
(source: HttpHandler<unit>)
: HttpHandler<ItemsWithoutCursor<SimulatorModel>> =
: HttpHandler<ItemsWithCursor<SimulatorModel>> =
source
|> withLogMessage "simulators:listSimulatorModels"
|> withAlphaHeader
Expand Down Expand Up @@ -157,7 +157,7 @@ module Simulators =
let listSimulatorModelRevisions
(query: SimulatorModelRevisionQuery)
(source: HttpHandler<unit>)
: HttpHandler<ItemsWithoutCursor<SimulatorModelRevision>> =
: HttpHandler<ItemsWithCursor<SimulatorModelRevision>> =
source
|> withLogMessage "simulators:listSimulatorModelRevisions"
|> withAlphaHeader
Expand All @@ -184,7 +184,7 @@ module Simulators =
let listSimulatorRoutines
(query: SimulatorRoutineQuery)
(source: HttpHandler<unit>)
: HttpHandler<ItemsWithoutCursor<SimulatorRoutine>> =
: HttpHandler<ItemsWithCursor<SimulatorRoutine>> =
source
|> withLogMessage "simulators:listSimulatorRoutines"
|> withAlphaHeader
Expand Down Expand Up @@ -229,7 +229,7 @@ module Simulators =
let listSimulatorRoutineRevisions
(query: SimulatorRoutineRevisionQuery)
(source: HttpHandler<unit>)
: HttpHandler<ItemsWithoutCursor<SimulatorRoutineRevision>> =
: HttpHandler<ItemsWithCursor<SimulatorRoutineRevision>> =
source
|> withLogMessage "simulators:listSimulatorRoutineRevisions"
|> withAlphaHeader
Expand Down
2 changes: 1 addition & 1 deletion version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.3.1
4.4.0

0 comments on commit 77b8971

Please sign in to comment.