Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions QuickbaseNet.Examples/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using Newtonsoft.Json;
using QuickbaseNet.Helpers;
using QuickbaseNet.Models;
using QuickbaseNet.Requests;
using QuickbaseNet.Services;

Expand All @@ -10,7 +9,7 @@ internal class Program
{
static async Task Main(string[] args)
{
var quickBaseClient = new QuickbaseClient("REALM_NAME", "TOKEN_GOES_HERE");
var quickBaseClient = new QuickbaseClient("diamond", "bztp36_cn6v_0_c5k72hvbvma5mh8xmjgzb4qqsys");
var query = new QuickbaseQueryBuilder()
.From("bmycek2xq")
.Select(3, 7, 14, 75, 150, 157, 354, 355, 367, 538, 539, 540, 541, 542, 543)
Expand Down
129 changes: 66 additions & 63 deletions QuickbaseNet/Helpers/QuickbaseCommandBuilder.cs
Original file line number Diff line number Diff line change
@@ -1,85 +1,88 @@
using QuickbaseNet.Models;
using System;
using System.Collections.Generic;
using QuickbaseNet.Models;
using QuickbaseNet.Requests;

namespace QuickbaseNet.Helpers;

public class QuickbaseCommandBuilder
namespace QuickbaseNet.Helpers
{
private string _tableId;
private string _whereClauseForDeletion;
private readonly List<Dictionary<string, FieldValue>> _records = new();
private int[] _fieldsToReturn;

public QuickbaseCommandBuilder ForTable(string tableId)
public class QuickbaseCommandBuilder
{
_tableId = tableId;
return this;
}
private string _tableId;
private string _whereClauseForDeletion;
private readonly List<Dictionary<string, FieldValue>> _records = new List<Dictionary<string, FieldValue>>();
private int[] _fieldsToReturn;

public QuickbaseCommandBuilder ReturnFields(params int[] fieldIds)
{
_fieldsToReturn = fieldIds;
return this;
}
public QuickbaseCommandBuilder ForTable(string tableId)
{
_tableId = tableId;
return this;
}

public QuickbaseCommandBuilder AddNewRecord(Action<RecordBuilder> config)
{
var recordBuilder = new RecordBuilder();
config(recordBuilder);
_records.Add(recordBuilder.Build());
return this;
}
public QuickbaseCommandBuilder ReturnFields(params int[] fieldIds)
{
_fieldsToReturn = fieldIds;
return this;
}

public QuickbaseCommandBuilder UpdateRecord(int recordId, Action<RecordBuilder> config)
{
var recordBuilder = new RecordBuilder();
config(recordBuilder);
public QuickbaseCommandBuilder AddNewRecord(Action<RecordBuilder> config)
{
var recordBuilder = new RecordBuilder();
config(recordBuilder);
_records.Add(recordBuilder.Build());
return this;
}

// Assuming '3' is the default key field ID for record ID
recordBuilder.AddField("3", recordId.ToString());
_records.Add(recordBuilder.Build());
return this;
}
public QuickbaseCommandBuilder UpdateRecord(int recordId, Action<RecordBuilder> config)
{
var recordBuilder = new RecordBuilder();
config(recordBuilder);

// Assuming '3' is the default key field ID for record ID
recordBuilder.AddField("3", recordId.ToString());
_records.Add(recordBuilder.Build());
return this;
}

public QuickbaseCommandBuilder WithDeletionCriteria(string whereClause)
{
_whereClauseForDeletion = whereClause;
return this;
}

public InsertOrUpdateRecordRequest BuildInsertUpdateCommand()
{
return new InsertOrUpdateRecordRequest
public QuickbaseCommandBuilder WithDeletionCriteria(string whereClause)
{
To = _tableId,
Data = _records,
FieldsToReturn = _fieldsToReturn
};
}
_whereClauseForDeletion = whereClause;
return this;
}

public DeleteRecordRequest BuildDeleteCommand()
{
return new DeleteRecordRequest
public InsertOrUpdateRecordRequest BuildInsertUpdateCommand()
{
From = _tableId,
Where = _whereClauseForDeletion
};
}

public class RecordBuilder
{
private readonly Dictionary<string, FieldValue> _fields = new();
return new InsertOrUpdateRecordRequest
{
To = _tableId,
Data = _records,
FieldsToReturn = _fieldsToReturn
};
}

public RecordBuilder AddField(string fieldId, string value)
public DeleteRecordRequest BuildDeleteCommand()
{
_fields[fieldId] = new FieldValue { Value = value };
return this;
return new DeleteRecordRequest
{
From = _tableId,
Where = _whereClauseForDeletion
};
}

public Dictionary<string, FieldValue> Build()
public class RecordBuilder
{
return _fields;
private readonly Dictionary<string, FieldValue> _fields = new Dictionary<string, FieldValue>();

public RecordBuilder AddField(string fieldId, string value)
{
_fields[fieldId] = new FieldValue { Value = value };
return this;
}

public Dictionary<string, FieldValue> Build()
{
return _fields;
}
}
}
}
97 changes: 50 additions & 47 deletions QuickbaseNet/Helpers/QuickbaseQueryBuilder.cs
Original file line number Diff line number Diff line change
@@ -1,61 +1,64 @@
using QuickbaseNet.Models;
using System.Collections.Generic;
using System.Linq;
using QuickbaseNet.Models;
using QuickbaseNet.Requests;

namespace QuickbaseNet.Helpers;

public class QuickbaseQueryBuilder
namespace QuickbaseNet.Helpers
{
private string _from;
private List<int> _select;
private string _where;
private List<SortByItem> _sortBy;
private List<GroupByItem> _groupBy;

public QuickbaseQueryBuilder From(string from)
public class QuickbaseQueryBuilder
{
_from = from;
return this;
}
private string _from;
private List<int> _select;
private string _where;
private List<SortByItem> _sortBy;
private List<GroupByItem> _groupBy;

public QuickbaseQueryBuilder Select(params int[] fields)
{
_select = fields.ToList();
return this;
}
public QuickbaseQueryBuilder From(string from)
{
_from = from;
return this;
}

public QuickbaseQueryBuilder Where(string where)
{
_where = where;
return this;
}
public QuickbaseQueryBuilder Select(params int[] fields)
{
_select = fields.ToList();
return this;
}

public QuickbaseQueryBuilder SortBy(int fieldId, string order)
{
if (_sortBy == null)
_sortBy = new List<SortByItem>();
public QuickbaseQueryBuilder Where(string where)
{
_where = where;
return this;
}

_sortBy.Add(new SortByItem { FieldId = fieldId, Order = order });
return this;
}
public QuickbaseQueryBuilder SortBy(int fieldId, string order)
{
if (_sortBy == null)
_sortBy = new List<SortByItem>();

public QuickbaseQueryBuilder GroupBy(int fieldId, string grouping)
{
if (_groupBy == null)
_groupBy = new List<GroupByItem>();
_sortBy.Add(new SortByItem { FieldId = fieldId, Order = order });
return this;
}

_groupBy.Add(new GroupByItem { FieldId = fieldId, Grouping = grouping });
return this;
}
public QuickbaseQueryBuilder GroupBy(int fieldId, string grouping)
{
if (_groupBy == null)
_groupBy = new List<GroupByItem>();

public QuickbaseQueryRequest Build()
{
return new QuickbaseQueryRequest
_groupBy.Add(new GroupByItem { FieldId = fieldId, Grouping = grouping });
return this;
}

public QuickbaseQueryRequest Build()
{
From = _from,
Select = _select,
Where = _where,
SortBy = _sortBy,
GroupBy = _groupBy
};
return new QuickbaseQueryRequest
{
From = _from,
Select = _select,
Where = _where,
SortBy = _sortBy,
GroupBy = _groupBy
};
}
}
}
20 changes: 10 additions & 10 deletions QuickbaseNet/Models/Field.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
using Newtonsoft.Json;
using System.Text.Json.Serialization;

namespace QuickbaseNet.Models;

public class Field
namespace QuickbaseNet.Models
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("label")]
public string Label { get; set; }
[JsonProperty("type")]
public string Type { get; set; }
public class Field
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("label")]
public string Label { get; set; }
[JsonProperty("type")]
public string Type { get; set; }
}
}
12 changes: 6 additions & 6 deletions QuickbaseNet/Models/FieldValue.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using Newtonsoft.Json;
using System.Text.Json.Serialization;

namespace QuickbaseNet.Models;

public class FieldValue
namespace QuickbaseNet.Models
{
[JsonProperty("value")]
public dynamic Value { get; set; }
public class FieldValue
{
[JsonProperty("value")]
public dynamic Value { get; set; }
}
}
16 changes: 8 additions & 8 deletions QuickbaseNet/Models/GroupByItem.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using Newtonsoft.Json;
using System.Text.Json.Serialization;

namespace QuickbaseNet.Models;

public class GroupByItem
namespace QuickbaseNet.Models
{
[JsonProperty("fieldId")]
public int FieldId { get; set; }
[JsonProperty("grouping")]
public string Grouping { get; set; }
public class GroupByItem
{
[JsonProperty("fieldId")]
public int FieldId { get; set; }
[JsonProperty("grouping")]
public string Grouping { get; set; }
}
}
26 changes: 13 additions & 13 deletions QuickbaseNet/Models/Metadata.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json;

namespace QuickbaseNet.Models;

public class Metadata
namespace QuickbaseNet.Models
{
[JsonProperty("totalRecords")]
public int TotalRecords { get; set; }
[JsonProperty("numRecords")]
public int NumRecords { get; set; }
[JsonProperty("numFields")]
public int NumFields { get; set; }
[JsonProperty("skip")]
public int Skip { get; set; }
public class Metadata
{
[JsonProperty("totalRecords")]
public int TotalRecords { get; set; }
[JsonProperty("numRecords")]
public int NumRecords { get; set; }
[JsonProperty("numFields")]
public int NumFields { get; set; }
[JsonProperty("skip")]
public int Skip { get; set; }
}
}
Loading