JsonUpdateableProvider.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Linq;
  6. namespace SqlSugar
  7. {
  8. public partial class JsonUpdateableProvider : IJsonUpdateableProvider<JsonUpdateResult>
  9. {
  10. private ISqlSugarClient context;
  11. private JObject jObject;
  12. private JsonCommonProvider jsonCommonProvider;
  13. private string TableName { get; set; }
  14. private bool isList { get; set; }
  15. private IUpdateable<Dictionary<string, object>> sugarUpdateable;
  16. public JsonUpdateableProvider(ISqlSugarClient context, JObject jObject)
  17. {
  18. this.jObject = jObject;
  19. this.context = context;
  20. this.jsonCommonProvider = new JsonCommonProvider(context);
  21. }
  22. public JsonUpdateResult ToResult()
  23. {
  24. var result = new JsonUpdateResult();
  25. var sqlInfo = this.ToSqlList();
  26. var sqlInfoResult = sqlInfo.First();
  27. result.UpdateRows = this.context.Ado.ExecuteCommand(sqlInfoResult.Sql, sqlInfoResult.Parameters);
  28. return result;
  29. }
  30. public SqlObjectResult ToSql()
  31. {
  32. return this.ToSqlList().First();
  33. }
  34. public List<SqlObjectResult> ToSqlList()
  35. {
  36. List<SqlObjectResult> result = new List<SqlObjectResult>();
  37. JsonQueryParameter jsonQueryParameter = new JsonQueryParameter();
  38. List<JToken> appendTypeNames = GetAppendTypes();
  39. foreach (JToken item in appendTypeNames)
  40. {
  41. AppendAll(jsonQueryParameter, item);
  42. }
  43. var addItem = this.sugarUpdateable.ToSql();
  44. result.Add(new SqlObjectResult(addItem,JsonProviderType.Updateable));
  45. return result;
  46. }
  47. private List<JToken> GetAppendTypes()
  48. {
  49. var appendTypeNames = this.jObject.AsJEnumerable().ToList();
  50. appendTypeNames = appendTypeNames.OrderBy(it =>
  51. {
  52. if (it.Path.EqualCase(JsonProviderConfig.KeyUpdateable.Get())) return 0;
  53. if (it.Path.EqualCase("Columns")) return 1;
  54. else return 3;
  55. } ).ToList();
  56. return appendTypeNames;
  57. }
  58. private void AppendAll(JsonQueryParameter jsonQueryParameter, JToken item)
  59. {
  60. var name = item.Path.ToLower();
  61. if (IsTable(name))
  62. {
  63. AppendTable(item);
  64. }
  65. else if (IsWhereColumns(name))
  66. {
  67. AppendWhereColumns(item);
  68. }
  69. else if (IsWhere(name))
  70. {
  71. AppendWhere(item);
  72. }
  73. else if (IsColumns(name))
  74. {
  75. AppendRow(item);
  76. }
  77. }
  78. public List<string> ToSqlString()
  79. {
  80. throw new NotImplementedException();
  81. }
  82. }
  83. }