public Table CreateTable(string tableName, string label, IEnumerable <Field> fields) { if (Session.Disconnected) { Session.Reconnect(); } var tableDescriptor = new TableDescriptor() { name = tableName, label = label, plural = tableName + "s" }; var fieldDescriptors = new List <FieldDescriptor>(); foreach (var f in fields) { fieldDescriptors.Add(f.AsFieldDescriptor()); } tableDescriptor.field = fieldDescriptors; // build up a request to create the table var request = Session.GetSessionRequest(m_uris.SchemaRoot, Method.POST); request.JsonSerializer.ContentType = "application/json; charset=utf-8"; request.JsonSerializer.Options = new SerializerOptions() { SkipNullProperties = true }; request.AddBody(tableDescriptor); // create the table var response = Session.Client.Execute(request); // check response switch (response.StatusCode) { case HttpStatusCode.Created: case HttpStatusCode.OK: // query the table schema back var actualTable = new Table(Session, tableName); lock (m_tableCache) { m_tableCache.Add(actualTable.Name, actualTable); } // TODO: handle failure return(actualTable); case HttpStatusCode.Forbidden: case HttpStatusCode.Unauthorized: if (Debugger.IsAttached) { Debugger.Break(); } Session.Disconnected = true; throw DreamFactoryException.Parse(response); default: throw DreamFactoryException.Parse(response); } }
public Table UpdateTable(string tableName, IEnumerable <Field> updatedFieldList) { if (Session.Disconnected) { Session.Reconnect(); } var tableDescriptor = new TableDescriptor(); tableDescriptor.name = tableName; tableDescriptor.field = new List <FieldDescriptor>(); foreach (var f in updatedFieldList) { tableDescriptor.field.Add(f.AsFieldDescriptor()); } var request = Session.GetSessionRequest(m_uris.GetTableSchema(tableName), Method.PATCH); request.JsonSerializer.ContentType = "application/json; charset=utf-8"; request.JsonSerializer.Options = new SerializerOptions() { SkipNullProperties = true }; request.AddBody(tableDescriptor); // create the table var response = Session.Client.Execute(request); // check response switch (response.StatusCode) { case HttpStatusCode.OK: // query the table schema back var actualTable = new Table(Session, tableName); lock (m_tableCache) { if (!m_tableCache.ContainsKey(actualTable.Name)) { m_tableCache.Add(actualTable.Name, actualTable); } else { m_tableCache[actualTable.Name] = actualTable; } } // TODO: handle failure return(actualTable); case HttpStatusCode.Forbidden: case HttpStatusCode.Unauthorized: if (Debugger.IsAttached) { Debugger.Break(); } Session.Disconnected = true; throw DreamFactoryException.Parse(response); default: throw DreamFactoryException.Parse(response); } }