Skip to content

Commit cfb13cb

Browse files
committed
feat: driver_manager and type standards.
1 parent 96b8bef commit cfb13cb

20 files changed

+158
-3
lines changed

lib/dart_gdbc.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,32 @@
11
library dart_gdbc;
22

3+
part 'src/exeception/gdbc_exception.dart';
4+
part 'src/exeception/connect_exception.dart';
5+
part 'src/exeception/query_exception.dart';
6+
part 'src/exeception/version_exception.dart';
7+
part 'src/exeception/db_feature_exception.dart';
8+
9+
part 'src/driver_manager.dart';
310
part 'src/driver.dart';
411
part 'src/connection.dart';
512
part 'src/statement.dart';
13+
614
part 'src/result_set.dart';
715
part 'src/result_set_meta_data.dart';
816
part 'src/parameter_meta_data.dart';
917

1018
part 'src/prepared_statement.dart';
1119

1220
part 'src/data_source.dart';
21+
part 'src/types.dart';
22+
23+
// types
24+
part 'src/types/axis_point.dart';
25+
part 'src/types/axis_line.dart';
26+
part 'src/types/axis_polygon.dart';
27+
part 'src/types/gdb_entity.dart';
28+
part 'src/types/gdb_entity_property.dart';
29+
part 'src/types/gdb_node.dart';
30+
part 'src/types/gdb_path.dart';
31+
part 'src/types/gdb_relationship.dart';
32+
part 'src/types/type.dart';

lib/src/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
part of dart_gdbc;
22

33
abstract class Driver {
4-
Connection connect(String url, {Map<String, String> properties});
4+
Future<Connection> connect(String url, {Map<String, dynamic> properties});
55

66
bool acceptsURL(String url);
77
}

lib/src/driver_manager.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 DriverManager {
4+
static const String usrKey = 'username';
5+
static const String pwdKey = 'password';
6+
7+
static final Map<String, Driver> _drivers = {};
8+
9+
static void registerDriver(Driver driver, [String? driverId]) {
10+
_drivers[driverId ?? driver.runtimeType.toString()] = driver;
11+
}
12+
13+
static Future<Connection> getConnection(
14+
String url, {
15+
Map<String, dynamic>? properties,
16+
String? username,
17+
String? password,
18+
}) async {
19+
var driver =
20+
_drivers.values.firstWhere((element) => element.acceptsURL(url));
21+
properties ??= {};
22+
if (username != null) {
23+
properties[usrKey] ??= username;
24+
}
25+
if (password != null) {
26+
properties[pwdKey] ??= password;
27+
}
28+
return await driver.connect(url, properties: properties);
29+
}
30+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
part of dart_gdbc;
2+
3+
class ConnectException extends GdbcException {
4+
ConnectException({String? message, Error? cause})
5+
: super(message: message, cause: cause);
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
part of dart_gdbc;
2+
3+
/// A [GdbcException] thrown when a feature is not supported by the database.
4+
class DbFeatureException extends GdbcException {
5+
/// Creates a [DbFeatureException] with the given [message] and [cause].
6+
DbFeatureException(String message, {Error? cause})
7+
: super(message: message, cause: cause);
8+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
part of dart_gdbc;
2+
3+
class GdbcException implements Error {
4+
final String? message;
5+
6+
final Error? cause;
7+
8+
GdbcException({this.message, this.cause});
9+
10+
@override
11+
StackTrace? get stackTrace => cause?.stackTrace;
12+
13+
@override
14+
String toString() {
15+
var buffer = StringBuffer();
16+
buffer.write('GdbcException');
17+
if (message != null) {
18+
buffer.write(': $message');
19+
}
20+
if (cause != null) {
21+
buffer.write('\nCause: $cause');
22+
}
23+
return buffer.toString();
24+
}
25+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
part of dart_gdbc;
2+
3+
class GdbcQueryException extends GdbcException {
4+
GdbcQueryException({String? message, Error? cause})
5+
: super(message: message, cause: cause);
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
part of dart_gdbc;
2+
3+
class VersionException extends GdbcException {
4+
VersionException({String? message, Error? cause})
5+
: super(message: message, cause: cause);
6+
}

lib/src/prepared_statement.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
part of dart_gdbc;
22

3-
abstract class PreparedStatement extends Statement {}
3+
abstract class PreparedStatement extends Statement {
4+
Future<bool> execute([String gql, Map<String, dynamic>? params]);
5+
6+
Future<ResultSet> executeQuery([String gql, Map<String, dynamic>? params]);
7+
8+
Future<int> executeUpdate(String gql, [Map<String, dynamic>? params]);
9+
}

lib/src/result_set.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
part of dart_gdbc;
22

3-
abstract class ResultSet {}
3+
abstract class ResultSet {
4+
bool success = false;
5+
}

0 commit comments

Comments
 (0)