Skip to content

Commit b1cc701

Browse files
committed
fix: 修复list类型创建多余表头问题 (v0.0.1+2)
1 parent f5a4ce5 commit b1cc701

File tree

4 files changed

+27
-16
lines changed

4 files changed

+27
-16
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.0.1+2
2+
### Bug修复
3+
- 在 list 类型的结构下,确保多行公用 list 的 submetas,从而避免重复创建多余的 submeta,减少不必要的列。
4+
5+
16
## 0.0.1+1
27
- 支持在创建连接如指定了默认的space,则自动使用该space
38
- 适配dart_gdbc v0.0.1+3

lib/src/ng_result_handler.dart

+19-14
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ Map<GdbTypes, bool Function(dynamic)> typeGetter = {
4949
GdbTypes.unknown: (v) => true,
5050
};
5151

52-
Map<
53-
GdbTypes,
54-
dynamic Function(
55-
dynamic, ValueMetaData, int?, String? Function(int, dynamic)? nget)>
56-
typeHandler = {
52+
typedef NameGetter = String? Function(int, dynamic)?;
53+
typedef TypeHandler = dynamic Function(
54+
dynamic, ValueMetaData, int?, NameGetter);
55+
56+
Map<GdbTypes, TypeHandler> typeHandler = {
5757
GdbTypes.none: (v, m, t, nget) => null,
5858
GdbTypes.prop: (v, m, t, nget) => _handleProp(v, m, t),
5959
GdbTypes.node: (v, m, t, nget) =>
@@ -218,7 +218,7 @@ dynamic _handleValue(
218218
int? timezoneOffset, {
219219
ValueMetaData? parent,
220220
List? parentVal,
221-
String? Function(int, dynamic)? nameGetter,
221+
NameGetter? nameGetter,
222222
}) {
223223
var type = typeGetter.entries.firstWhere((getter) => getter.value(v)).key;
224224
meta.type = type;
@@ -295,21 +295,26 @@ _handlePolygon(ng.Polygon v, ValueMetaData meta) {
295295
];
296296
}
297297

298-
String? _idxName(p1, dynamic v) => '$p1';
298+
// NameGetter _idxName = (p1, dynamic v) => '$p1';
299+
NameGetter _itemName = (p1, dynamic v) => 'item';
300+
299301
_handleSet(ng.NSet v, ValueMetaData meta, int? timezoneOffset,
300-
[String? Function(int p1, dynamic p2)? nget]) {
302+
[NameGetter? nget]) {
301303
return _handleList(v.values?.toList() ?? [], meta, timezoneOffset, nget);
302304
}
303305

304306
_handleList(List<dynamic> values, ValueMetaData meta, int? timezoneOffset,
305-
[String? Function(int p1, dynamic p2)? nget]) {
306-
nget ??= _idxName;
307+
[NameGetter? nget]) {
308+
nget ??= _itemName;
307309
var list = <dynamic>[];
310+
ValueMetaData valueMeta = meta.submetas.isEmpty
311+
? (ValueMetaData()
312+
..name = 'item'
313+
..type = GdbTypes.unknown)
314+
: meta.submetas.first;
308315
for (var v in values) {
309-
ValueMetaData valueMeta = ValueMetaData()
310-
..name = nget(values.indexOf(v), v)
311-
..type = GdbTypes.unknown;
312-
_handleValue(v, valueMeta, timezoneOffset, parent: meta, parentVal: list);
316+
var val = _handleValue(v, valueMeta, timezoneOffset, parent: meta);
317+
list.add(val);
313318
}
314319
return list;
315320
}

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: nebula_dart_gdbc
22
description: A database driver for nebula graph based on dart_gdbc, help you to access nebula graph in dart language
3-
version: 0.0.1+1
3+
version: 0.0.1+2
44
repository: https://github.com/graph-cn/nebula_dart_gdbc
55

66
environment:

test/ng_result_handler_test.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,7 @@ void main() {
454454
..hour = now.hour
455455
..minute = now.minute
456456
..sec = now.second
457+
// TODO check why there are no milliseconds in nebula
457458
..microsec = now.microsecond)
458459
]
459460
]
@@ -469,7 +470,7 @@ void main() {
469470
now.hour,
470471
now.minute,
471472
now.second,
472-
now.millisecond,
473+
// now.millisecond,
473474
now.microsecond,
474475
),
475476
result);

0 commit comments

Comments
 (0)