//public async Task<DataQueryResult> Query<TRecord>(object queryToken) where TRecord : AirRecord //{ // QyeryBuilder queryBuilder; // if (queryToken is QyeryBuilder) { // queryBuilder = (QyeryBuilder)queryToken; // } // else if (queryToken == null) { // queryBuilder = new QyeryBuilder(); // } // else { // throw new ArgumentException("Invalid type of query token", queryToken.GetType().ToString()); // } // var list = await List<TRecord>(queryBuilder); // if (list != null && list.Records.Length > 0) { // queryBuilder.Offset += list.Records.Length; // return new DataQueryResult { // Records = list.Records, // Count = list.Records.Length, // NextToken = queryBuilder // }; // } // else { // return new DataQueryResult { Records = null, Count = 0, NextToken = null }; // } //} //public async Task<DataQueryResult> Filter<TRecord>(string formula, QyeryBuilder queryBuilder = null) where TRecord : AirRecord //{ // Guard.ArgumentNotEmpty(formula, nameof(formula)); // string savedFormula = null; // if (queryBuilder == null) { // queryBuilder = new QyeryBuilder { FilterByFormula = formula }; // } // else { // savedFormula = queryBuilder.FilterByFormula; // queryBuilder.FilterByFormula = formula; // } // var result = await Query<TRecord>(queryBuilder); // queryBuilder.FilterByFormula = savedFormula; // return result; //} //public async Task<ICollection<IDataRecord>> GetAllRecords<TRecord>() where TRecord : AirRecord //{ // var records = new List<IDataRecord>(); // var queryBuilder = new QyeryBuilder(); // bool hasMore = true; // do { // var list = await List<TRecord>(queryBuilder); // if (list != null && list.Records.Length > 0) { // records.AddRange(list.Records); // queryBuilder.Offset = list.Offset; // hasMore = list.Offset != null; // } // else { // hasMore = false; // } // } // while (hasMore); // return records; //} public async Task <TRecord> GetRecord <TRecord>(string recordId) { var uri = AirClient.RecordUri(Base.BaseId, Name, recordId); var response = await AirClient.GetAsync(Base.ApiKey, uri); var settings = new JsonSerializerSettings(); settings.DateTimeZoneHandling = UsesUTC ? DateTimeZoneHandling.Utc : DateTimeZoneHandling.Local; var record = JsonConvert.DeserializeObject <TRecord>(response.Body, settings); return(record); }
public async Task <AirRecordList <TRecord> > List <TRecord>(QyeryBuilder queryBuilder = null) where TRecord : AirRecord { if (queryBuilder == null) { queryBuilder = new QyeryBuilder { } } ; var uri = queryBuilder.GetUri(Base.BaseId, Name); var response = await AirClient.GetAsync(Base.ApiKey, uri); var recordList = JsonConvert.DeserializeObject <AirRecordList <TRecord> >(response.Body); return(recordList); }