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; })); }
public async Task UpdateAsync(Consent consent) { Preconditions.IsNotNull(consent, nameof(consent)); var consentExistsTask = ConsentExistsInTable(consent); var row = ConsentRow.Convert(consent); if (await consentExistsTask) { // Update await _conn.ExecuteCommand(_updateQuery, async cmd => { cmd.Parameters.AddWithValue("subject", row.Subject); cmd.Parameters.AddWithValue("client", row.ClientId); cmd.Parameters.AddWithValue("scopes", row.ScopesAsString); int rowsAffected = await cmd.ExecuteNonQueryAsync(); return(rowsAffected); }); } else { // Insert await _conn.ExecuteCommand(_insertQuery, async cmd => { cmd.Parameters.AddWithValue("subject", row.Subject); cmd.Parameters.AddWithValue("client", row.ClientId); cmd.Parameters.AddWithValue("scopes", row.ScopesAsString); int rowsAffected = await cmd.ExecuteNonQueryAsync(); return(rowsAffected); }); } }