table.sbn 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. import 'dart:collection';
  2. {{declaring_import_name __value_type '/gen/'}}
  3. {{~if __table.is_singleton_table ~}}
  4. {{for field in __value_type.def_bean.hierarchy_export_fields}}{{import_ref_type_dart field '/gen/'}}{{end}}
  5. {{~end~}}
  6. import '/gen/Tables.dart';
  7. {{
  8. func index_type_name
  9. ret (declaring_type_name $0.type)
  10. end
  11. func table_union_map_type_name
  12. ret 'Map<(' + (array.each __table.index_list @index_type_name | array.join ', ') + '), ' + (declaring_type_name __value_type) + '>'
  13. end
  14. func table_key_list
  15. varName = $0
  16. indexList = __table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
  17. ret array.join indexList ', '
  18. end
  19. func table_param_def_list
  20. paramList = __table.index_list |array.each do; ret (declaring_type_name $0.type) + ' ' + $0.index_field.name; end
  21. ret array.join paramList ', '
  22. end
  23. func table_param_name_list
  24. paramList = __table.index_list |array.each do; ret $0.index_field.name; end
  25. ret array.join paramList ', '
  26. end
  27. }}
  28. {{~if __this.comment != '' ~}}
  29. //{{escape_comment __this.comment}}
  30. {{~end~}}
  31. final class {{__name}} {
  32. {{~if __table.is_map_table ~}}
  33. final List<{{declaring_type_name __value_type}}> _dataList = [];
  34. final Map<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> _dataMap = {};
  35. {{__name}}(List<dynamic> _array) {
  36. for (var _buf in _array) {
  37. {{declaring_type_name __value_type}} _item = {{declaring_type_name __value_type}}.deserialize(_buf);
  38. _dataList.add(_item);
  39. _dataMap[_item.{{format_field_name __code_style __this.index_field.name}}] = _item;
  40. }
  41. }
  42. {{declaring_type_name __value_type}}? getOrDefault({{declaring_type_name __key_type}} id) {
  43. if (_dataMap.containsKey(id)) {
  44. return _dataMap[id];
  45. }
  46. return null;
  47. }
  48. void resolveRef({{__manager_name}} tables)
  49. {
  50. for(var _v in _dataList)
  51. {
  52. _v.resolveRef(tables);
  53. }
  54. }
  55. {{~else if __table.is_list_table ~}}
  56. final List<{{declaring_type_name __value_type}}> _dataList = [];
  57. {{~if __table.is_union_index~}}
  58. final {{table_union_map_type_name}} _dataMapUnion = {};
  59. {{~else if !__table.index_list.empty?~}}
  60. {{~for idx in __table.index_list~}}
  61. final Map<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}> _dataMap_{{idx.index_field.name}}={};
  62. {{~end~}}
  63. {{~end~}}
  64. {{__name}}(List<dynamic> _array) {
  65. for (var _buf in _array) {
  66. {{declaring_type_name __value_type}} _item = {{declaring_type_name __value_type}}.deserialize(_buf);
  67. _dataList.add(_item);
  68. }
  69. {{~if __table.is_union_index~}}
  70. for(var _v in _dataList)
  71. {
  72. _dataMapUnion[({{table_key_list "_v"}})]= _v;
  73. }
  74. {{~else if !__table.index_list.empty?~}}
  75. for(var _v in _dataList)
  76. {
  77. {{~for idx in __table.index_list~}}
  78. _dataMap_{{idx.index_field.name}}[_v.{{format_property_name __code_style idx.index_field.name}}]= _v;
  79. {{~end~}}
  80. }
  81. {{~end~}}
  82. }
  83. List<{{declaring_type_name __value_type}}> get dataList => _dataList;
  84. {{~if __table.is_union_index~}}
  85. {{declaring_type_name __value_type}}? get({{table_param_def_list}}) => _dataMapUnion[({{table_param_name_list}})];
  86. {{~else if !__table.index_list.empty? ~}}
  87. {{~for idx in __table.index_list~}}
  88. {{declaring_type_name __value_type}}? getBy{{format_property_name __code_style idx.index_field.name}}({{declaring_type_name idx.type}} key) => _dataMap_{{idx.index_field.name}}[key];
  89. {{~end~}}
  90. {{~end~}}
  91. void resolveRef({{__manager_name}} tables)
  92. {
  93. }
  94. {{~else~}}
  95. {{declaring_type_name __value_type}}? _data;
  96. {{declaring_type_name __value_type}}? get data => _data;
  97. {{__name}}(List<dynamic> _array) {
  98. var n = _array.length;
  99. if (n != 1)
  100. {
  101. throw Exception("table mode=one, but size != 1");
  102. }
  103. for (var _buf in _array) {
  104. _data = {{declaring_type_name __value_type}}.deserialize(_buf);
  105. }
  106. }
  107. {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
  108. {{~if field.comment != '' ~}}
  109. /// <summary>
  110. /// {{escape_comment field.comment}}
  111. /// </summary>
  112. {{~end~}}
  113. {{declaring_null_type_name field.ctype}} get {{format_property_name __code_style field.name}} => _data?.{{format_name_lower_camel field.name}};
  114. {{~end~}}
  115. void resolveRef({{__manager_name}} tables)
  116. {
  117. }
  118. {{~end~}}
  119. }