sqlsugar/Src/Asp.NetCore2/SqlSugar/Json2Sql/JsonToModel/JsonSqlFuncToModel.cs

87 lines
2.5 KiB
C#

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SqlSugar
{
/// <summary>
/// SqlFunc to model
/// </summary>
public partial class ContextMethods : IContextMethods
{
#region Root
public ObjectFuncModel JsonToSqlFuncModels(JToken sqlfunc)
{
var key = sqlfunc.First();
if (IsObjct(sqlfunc))
{
return GetFuncModelByObject(key);
}
else
{
return GetFuncModelByArray(sqlfunc);
}
}
public IFuncModel JsonToSqlFuncModels(string sqlfunc)
{
if (IsArray(sqlfunc))
{
return GetFuncModelByArray(sqlfunc);
}
else
{
return GetFuncModelByObject(sqlfunc);
}
}
#endregion
#region Level 1
private ObjectFuncModel GetFuncModelByArray(JToken sqlfunc)
{
ObjectFuncModel result = new ObjectFuncModel();
result.Parameters = new List<object>();
result.FuncName = "Sqlfunc_Format";
StringBuilder sb = new StringBuilder();
foreach (var item in sqlfunc)
{
result.Parameters.Add(GetParameter(item));
}
return result;
}
private ObjectFuncModel GetFuncModelByObject(JToken key)
{
ObjectFuncModel result = new ObjectFuncModel();
JProperty jProperty = key.ToObject<JProperty>();
result.FuncName = jProperty.Name;
var parameters = jProperty.Value;
result.Parameters = GetParameter(parameters);
return result;
}
private IFuncModel GetFuncModelByObject(string sqlfunc)
{
var jObject = this.Context.Utilities.DeserializeObject<JObject>(sqlfunc);
return JsonToSqlFuncModels(jObject);
}
private IFuncModel GetFuncModelByArray(string sqlfunc)
{
ObjectFuncModel result = new ObjectFuncModel();
result.Parameters = new List<object>();
result.FuncName = "Sqlfunc_Format";
var jArrary = this.Context.Utilities.DeserializeObject<JArray>(sqlfunc);
StringBuilder sb = new StringBuilder();
foreach (var item in jArrary)
{
result.Parameters.Add(GetParameter(item));
}
return result;
}
#endregion
}
}