Skip to content

Commit b7f44d0

Browse files
committed
feat: types
1 parent cfb13cb commit b7f44d0

File tree

6 files changed

+68
-8
lines changed

6 files changed

+68
-8
lines changed

lib/dart_gdbc.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
library dart_gdbc;
22

3+
import 'dart:convert';
4+
35
part 'src/exeception/gdbc_exception.dart';
46
part 'src/exeception/connect_exception.dart';
57
part 'src/exeception/query_exception.dart';
@@ -14,6 +16,7 @@ part 'src/statement.dart';
1416
part 'src/result_set.dart';
1517
part 'src/result_set_meta_data.dart';
1618
part 'src/parameter_meta_data.dart';
19+
part 'src/value_meta_data.dart';
1720

1821
part 'src/prepared_statement.dart';
1922

lib/src/driver_manager.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,12 @@ class DriverManager {
1616
String? username,
1717
String? password,
1818
}) async {
19-
var driver =
20-
_drivers.values.firstWhere((element) => element.acceptsURL(url));
19+
Driver? driver;
20+
try {
21+
driver = _drivers.values.firstWhere((element) => element.acceptsURL(url));
22+
} catch (e) {
23+
throw ArgumentError('No suitable driver found for $url');
24+
}
2125
properties ??= {};
2226
if (username != null) {
2327
properties[usrKey] ??= username;

lib/src/exeception/gdbc_exception.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class GdbcException implements Error {
1313
@override
1414
String toString() {
1515
var buffer = StringBuffer();
16-
buffer.write('GdbcException');
16+
buffer.write(runtimeType);
1717
if (message != null) {
1818
buffer.write(': $message');
1919
}

lib/src/result_set.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,15 @@ part of dart_gdbc;
22

33
abstract class ResultSet {
44
bool success = false;
5+
6+
List<ValueMetaData> get metas;
7+
8+
List<List<dynamic>> get rows;
9+
10+
List<String?> get columns => metas.map((e) => e.name).toList();
11+
12+
@override
13+
String toString() {
14+
return '$runtimeType{\n\tsuccess: $success,\n\tmetas: ${metas.map((e) => e.toJson()).toList()},\n\tcolumns: $columns,\n\trows: ${jsonEncode(rows)}\n}';
15+
}
516
}

lib/src/types.dart

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,38 @@ part of dart_gdbc;
22

33
enum GdbTypes {
44
// types in graph database
5-
axisLine,
6-
axisPoint,
7-
axisPolygon,
5+
line,
6+
point,
7+
polygon,
88
node,
9+
tag,
10+
prop,
911
path,
1012
relationship,
13+
step,
1114

1215
// basic types in dart
13-
bytes,
16+
bool,
17+
byte,
18+
short,
1419
int,
20+
long,
21+
float,
1522
double,
23+
24+
bytes,
1625
string,
17-
bool,
26+
1827
date,
1928
time,
2029
dateTime,
2130
duration,
31+
2232
list,
2333
map,
2434
set,
2535
none,
36+
2637
unknown,
38+
dataSet,
2739
}

lib/src/value_meta_data.dart

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
part of dart_gdbc;
2+
3+
class ValueMetaData {
4+
late GdbTypes? type;
5+
String? name;
6+
final List<ValueMetaData> submetas = [];
7+
8+
addSubmeta(ValueMetaData submeta) {
9+
var idx =
10+
submetas.lastIndexWhere((element) => element.name == submeta.name);
11+
if (idx == -1) {
12+
submetas.add(submeta);
13+
return submetas.length - 1;
14+
}
15+
return idx;
16+
}
17+
18+
@override
19+
String toString() {
20+
return '$runtimeType{type: $type, name: $name, submetas: $submetas}';
21+
}
22+
23+
Map<String, dynamic> toJson() {
24+
return {
25+
"'type'": type?.index,
26+
"'name'": "'$name'",
27+
"'submetas'": submetas.map((e) => e.toJson()).toList(),
28+
};
29+
}
30+
}

0 commit comments

Comments
 (0)