/// <summary> /// Initializes a new instance of the <see cref="MoBackInternal.MatchingQuery"/> class. /// </summary> /// <param name="column"> A column. </param> /// <param name="value"> An object value. </param> public MatchingQuery(string column, object value) { constraints = new SimpleJSONClass(); MoBackValueType type = MoBackInternal.MoBackUtils.ExtractMobackType(ref value); constraints.Add(column, MoBackInternal.MoBackUtils.MoBackTypedObjectToJSON(value, type)); }
/// <summary> /// Sets the type of the column. /// </summary> /// <param name="columnName"> The column to manipulate. </param> /// <param name="type"> The type of the specified column. </param> protected void SetColumnType(string columnName, MoBackValueType type) { if (!columnTypeData.ContainsKey(columnName)) { columnTypeDataAsColumnDefinitions.Add(new MoBackColumn(columnName, type)); columnTypeData[columnName] = type; } }
/// <summary> /// Initializes a new instance of the <see cref="MoBackInternal.ComparisonQuery"/> class. /// </summary> /// <param name="column"> A column.</param> /// <param name="value"> An object value. </param> /// <param name="comparisonOperator"> A comparison operator as a string. </param> public ComparisonQuery(string column, object value, string comparisonOperator) { constraints = new SimpleJSONClass(); SimpleJSONClass constraint = new SimpleJSONClass(); MoBackValueType type = MoBackInternal.MoBackUtils.ExtractMobackType(ref value); constraint.Add(comparisonOperator, MoBackInternal.MoBackUtils.MoBackTypedObjectToJSON(value, type)); constraints.Add(column, constraint); }
/// <summary> /// Initializes a new instance of the <see cref="MoBackInternal.ComparisonQuery"/> class. /// </summary> /// <param name="column"> A column.</param> /// <param name="values"> An array object values. </param> /// <param name="comparisonOperator"> A comparison operator as a string. </param> public ComparisonQuery(string column, object[] values, string comparisonOperator) { constraints = new SimpleJSONClass(); SimpleJSONClass constraint = new SimpleJSONClass(); SimpleJSONArray constraintValues = new SimpleJSONArray(); for (int i = 0; i < values.Length; i++) { object value = values[i]; MoBackValueType type = MoBackInternal.MoBackUtils.ExtractMobackType(ref value); constraintValues.Add(MoBackInternal.MoBackUtils.MoBackTypedObjectToJSON(value, type)); } constraint.Add(comparisonOperator, constraintValues); constraints.Add(column, constraint); }
public static SimpleJSONNode MoBackTypedObjectToJSON(object data, MoBackValueType dataType) { switch (dataType) { case MoBackValueType.String: return(data == null ? "" : (string)data); case MoBackValueType.Boolean: return((bool)data); case MoBackValueType.Number: MoBackNumber number = (MoBackInternal.MoBackNumber)data; return(number.GetJSON()); case MoBackValueType.Date: return(MoBackDate.DateToMobackFormatJSON((DateTime)data)); case MoBackValueType.File: return(((MoBackFile)data).GetJSON()); case MoBackValueType.Pointer: return(MoBackPointer.PointerToMoBackJSON((MoBackPointer)data)); case MoBackValueType.Relation: return(MoBackRelation.MoBackJSONFromRelation((MoBackRelation)data)); case MoBackValueType.MoBackObject: if (data != null) { return(((MoBackObject)data).GetJSON()); } else { return(new SimpleJSONClass()); } case MoBackValueType.Array: return(((MoBackArray)data).GetJSON()); default: throw new NotImplementedException(); } }
/// <summary> /// Creates the column. /// </summary> /// <returns>Returns the status of the request.</returns> /// <param name="columnName">Column name.</param> /// <param name="columnType">Column type.</param> public MoBackRequest CreateColumn(string columnName, MoBackValueType columnType) { SimpleJSONClass columnTypeSpecifier = new SimpleJSONClass(); // TODO: check if any of these type-names don't fit the moback spec. According to REST api reference they should be... columnTypeSpecifier.Add("__type", columnTypeSpecifier.ToString()); SimpleJSONClass columnDataHolder = new SimpleJSONClass(); columnDataHolder.Add(columnName, columnTypeSpecifier); /* * Sample uri: https://api.moback.com/objectmgr/api/schema/{tableName}/ * Sample Json Request Body: * { * "FavoriteFood" : {"__type" : "string"} * } */ return(new MoBackRequest(MoBackURLS.TablesSpecial + table.TableName, HTTPMethod.PUT, null, columnDataHolder.ToString().ToByteArray())); }
/// <summary> /// Initializes a new instance of the MoBackColumn class. /// </summary> /// <param name="columnName"> Column name. </param> /// <param name="columnType"> Column type. </param> public MoBackColumn(string columnName, MoBackValueType columnType) { Type = columnType; Name = columnName; }
public static object MoBackTypedObjectFromJSON(SimpleJSONNode node, out MoBackValueType dataType) { if (MoBackAppSettings.doublePrecisionFloatingPoint && node.valueType == typeof(double)) { dataType = MoBackValueType.Number; return(new MoBackNumber(node.AsDouble)); } else if (!MoBackAppSettings.doublePrecisionFloatingPoint && node.valueType == typeof(float)) { dataType = MoBackValueType.Number; return(new MoBackNumber(node.AsFloat)); } else if (node.valueType == typeof(int)) { dataType = MoBackValueType.Number; return(new MoBackNumber(node.AsInt)); } else if (node.valueType == typeof(bool)) { dataType = MoBackValueType.Boolean; return(node.AsBool); } else if (node.valueType == typeof(string)) { dataType = MoBackValueType.String; return(node.Value); } else if (node.valueType == typeof(SimpleJSONClass)) { SimpleJSONClass nestedClass = (SimpleJSONClass)node; if (nestedClass.dict.ContainsKey("__type")) { //is a special type, treat accordingly switch (nestedClass["__type"].Value) { case "Date": dataType = MoBackValueType.Date; return(MoBackDate.DateFromMoBackJSON(node)); case "Pointer": dataType = MoBackValueType.Pointer; return(MoBackPointer.PointerFromMoBackJSON(node)); case "Relation": dataType = MoBackValueType.Relation; return(MoBackRelation.RelationFromMoBackJSON(node)); case "File": dataType = MoBackValueType.File; return(MoBackFile.FromJSON(node)); default: //not familiar with this special type; fall back to parsing as regular object if (MoBack.MoBackAppSettings.loggingLevel >= MoBack.MoBackAppSettings.LoggingLevel.WARNINGS) { Debug.LogWarning("Unrecognized MoBack reserved type '" + nestedClass["__type"] + "'."); } dataType = MoBackValueType.MoBackObject; return(MoBackObject.FromJSON(nestedClass)); } } else { dataType = MoBackValueType.MoBackObject; return(MoBackObject.FromJSON(nestedClass)); } } else if (node.valueType == typeof(SimpleJSONArray)) { dataType = MoBackValueType.Array; return(MoBackArray.FromJSON((SimpleJSONArray)node)); } throw new ArgumentException("JSON data type not supported in some manner.", "SimpleJsonNode node"); }
/// <summary> /// Creates the column. /// </summary> /// <returns>The column.</returns> /// <param name="columnName">Column name.</param> /// <param name="columnType">Column type.</param> public MoBackRequest CreateColumn(string columnName, MoBackValueType columnType) { return(RequestB.CreateColumn(columnName, columnType)); }