/// <inheritdoc/> public async Task <SupervisorListModel> QuerySupervisorsAsync( SupervisorQueryModel query, bool onlyServerState, int?pageSize, CancellationToken ct) { var result = await _client.QuerySupervisorsAsync(query.ToApiModel(), onlyServerState, pageSize, ct); return(result.ToServiceModel()); }
/// <inheritdoc/> public async Task <SupervisorListModel> QuerySupervisorsAsync( SupervisorQueryModel query, bool onlyServerState, int?pageSize) { var result = await _client.QuerySupervisorsAsync( Map <SupervisorQueryApiModel>(query), onlyServerState, pageSize); return(Map <SupervisorListModel>(result)); }
/// <summary> /// Query all supervisors /// </summary> /// <param name="service"></param> /// <param name="query"></param> /// <param name="onlyServerState"></param> /// <param name="ct"></param> /// <returns></returns> public static async Task <List <SupervisorModel> > QueryAllSupervisorsAsync( this ISupervisorRegistry service, SupervisorQueryModel query, bool onlyServerState = false, CancellationToken ct = default) { var supervisors = new List <SupervisorModel>(); var result = await service.QuerySupervisorsAsync(query, onlyServerState, null, ct); supervisors.AddRange(result.Items); while (result.ContinuationToken != null) { result = await service.ListSupervisorsAsync(result.ContinuationToken, onlyServerState, null, ct); supervisors.AddRange(result.Items); } return(supervisors); }
/// <inheritdoc/> public async Task <SupervisorListModel> QuerySupervisorsAsync( SupervisorQueryModel model, bool onlyServerState, int?pageSize, CancellationToken ct) { var query = "SELECT * FROM devices.modules WHERE " + $"properties.reported.{TwinProperty.Type} = '{IdentityType.Supervisor}'"; if (model?.SiteId != null) { // If site id provided, include it in search query += $"AND (properties.reported.{TwinProperty.SiteId} = " + $"'{model.SiteId}' OR properties.desired.{TwinProperty.SiteId} = " + $"'{model.SiteId}' OR deviceId = '{model.SiteId}') "; } if (EndpointInfoModelEx.IsEndpointId(model?.EndpointId)) { // If endpoint id provided include in search query += $"AND IS_DEFINED(properties.desired.{model.EndpointId}) "; } if (model?.Connected != null) { // If flag provided, include it in search if (model.Connected.Value) { query += $"AND connectionState = 'Connected' "; // Do not use connected property as module might have exited before updating. } else { query += $"AND (connectionState = 'Disconnected' " + $"OR properties.reported.{TwinProperty.Connected} != true) "; } } var queryResult = await _iothub.QueryDeviceTwinsAsync(query, null, pageSize, ct); return(new SupervisorListModel { ContinuationToken = queryResult.ContinuationToken, Items = queryResult.Items .Select(t => t.ToSupervisorRegistration(onlyServerState)) .Select(s => s.ToServiceModel()) .ToList() }); }
/// <summary> /// Create from service model /// </summary> /// <param name="model"></param> public SupervisorQueryApiModel(SupervisorQueryModel model) { SiteId = model.SiteId; Discovery = model.Discovery; Connected = model.Connected; }