public async Task GetDeviceSubscription()

in DeviceBridge/Providers/StorageProvider.cs [142:177]


        public async Task<DeviceSubscription> GetDeviceSubscription(Logger logger, string deviceId, DeviceSubscriptionType subscriptionType, CancellationToken cancellationToken)
        {
            try
            {
                logger.Info("Getting {subscriptionType} subscription for device {deviceId}", subscriptionType, deviceId);
                var sql = "SELECT * FROM DeviceSubscriptions WHERE DeviceId = @DeviceId AND SubscriptionType = @SubscriptionType";
                using SqlConnection connection = new SqlConnection(_connectionString);
                using SqlCommand command = new SqlCommand(sql, connection);
                command.Parameters.Add(new SqlParameter("DeviceId", deviceId));
                command.Parameters.Add(new SqlParameter("SubscriptionType", subscriptionType.ToString()));

                await connection.OpenAsync(cancellationToken);
                using SqlDataReader reader = await command.ExecuteReaderAsync(cancellationToken);

                if (await reader.ReadAsync(cancellationToken))
                {
                    logger.Info("Got {subscriptionType} for device {deviceId}", subscriptionType, deviceId);
                    return new DeviceSubscription()
                    {
                        DeviceId = reader["DeviceId"].ToString(),
                        SubscriptionType = DeviceSubscriptionType.FromString(reader["SubscriptionType"].ToString()),
                        CallbackUrl = await _encryptionService.Decrypt(logger, reader["CallbackUrl"].ToString()),
                        CreatedAt = (DateTime)reader["CreatedAt"],
                    };
                }
                else
                {
                    logger.Info("No {subscriptionType} subscription found for device {deviceId}", subscriptionType, deviceId);
                    return null;
                }
            }
            catch (Exception e)
            {
                throw TranslateSqlException(e);
            }
        }