public Task <IEnumerable <Consent> > LoadAllAsync(string subject)
        {
            Preconditions.IsShortString(subject, nameof(subject));

            return(_conn.ExecuteCommand(_loadAllQuery, async cmd =>
            {
                cmd.Parameters.AddWithValue("subject", subject);

                var consentList = new List <Consent>();

                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    var hasMoreRowsTask = reader.ReadAsync();
                    while (await hasMoreRowsTask)
                    {
                        var row = ConsentRow.Read(reader);

                        hasMoreRowsTask = reader.ReadAsync();

                        consentList.Add(row.ToConsent());
                    }
                }

                return (IEnumerable <Consent>)consentList;
            }));
        }
        public Task <Consent> LoadAsync(string subject, string client)
        {
            Preconditions.IsShortString(subject, nameof(subject));
            Preconditions.IsShortString(client, nameof(client));

            return(_conn.ExecuteCommand(_loadQuery, async cmd =>
            {
                cmd.Parameters.AddWithValue("@subject", subject);
                cmd.Parameters.AddWithValue("@client", client);

                Consent consent;

                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    if (await reader.ReadAsync())
                    {
                        var row = ConsentRow.Read(reader);

                        consent = row.ToConsent();
                    }
                    else
                    {
                        consent = null;
                    }
                }

                return consent;
            }));
        }