Skip to content

Commit 09dbb12

Browse files
Prepared statements (#6)
* wip * fix * rm commented-out code * extract to file * add comments * docs * fix * upd * test * upd * flutter_version * test * ? * blessrng * blessRNG * experiment * up * ultra bless * . * maybe closer * not bruh * please * <> * 777 * pls * ultra please * pls * hope * fix * fix * versions * fix * init? * done? * fix * upd
1 parent 9ac090e commit 09dbb12

File tree

5 files changed

+51
-11
lines changed

5 files changed

+51
-11
lines changed

example/lib/main.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ Future<Response> fetch(Request _) async {
2222
Future<QueryObjectResult<dynamic>> transaction(Transaction transaction) async {
2323
await transaction.queryObject(
2424
'UPDATE public."User" '
25-
"SET username='user${transaction.hashCode}' "
25+
r'SET username=$1 '
2626
"WHERE last_name='user'",
27+
["'user${transaction.hashCode}'"],
2728
);
2829
await Future.delayed(const Duration(seconds: 10));
2930

lib/deno_postgres_interop.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ library;
44
export 'src/client.dart';
55
export 'src/isolation_level.dart';
66
export 'src/query_client.dart';
7+
export 'src/query_object.dart' show QueryArguments;
78
export 'src/query_object_result.dart';
89
export 'src/transaction.dart';
910
export 'src/transaction_options.dart';

lib/src/query_client.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:js_interop';
22
import 'dart:js_util';
33

4+
import 'package:deno_postgres_interop/src/query_object.dart';
45
import 'package:deno_postgres_interop/src/query_object_result.dart';
56
import 'package:deno_postgres_interop/src/transaction.dart';
67
import 'package:deno_postgres_interop/src/transaction_options.dart';
@@ -46,9 +47,9 @@ extension QueryClientProps on QueryClient {
4647
}
4748

4849
/// [[email protected]/QueryClient/queryObject](https://deno.land/x/[email protected]/mod.ts?s=QueryClient#method_queryObject_0).
49-
Future<QueryObjectResult<T>> queryObject<T>(String query) => callFutureMethod(
50-
this,
51-
'queryObject',
52-
[query],
53-
);
50+
Future<QueryObjectResult<T>> queryObject<T>(
51+
String query, [
52+
QueryArguments? arguments,
53+
]) =>
54+
queryObjectCommon(this, query, arguments);
5455
}

lib/src/query_object.dart

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import 'package:deno_postgres_interop/deno_postgres_interop.dart';
2+
import 'package:deno_postgres_interop/src/util.dart';
3+
4+
/// [[email protected]/QueryArguments](https://deno.land/x/[email protected]/query/query.ts?s=QueryArguments)
5+
typedef QueryArguments = Object;
6+
7+
/// Common method between all Clients.
8+
///
9+
/// [[email protected]/Transaction/queryObject](https://deno.land/x/[email protected]/mod.ts?s=Transaction#method_queryObject_0).
10+
/// [[email protected]/QueryClient/queryObject](https://deno.land/x/[email protected]/mod.ts?s=QueryClient#method_queryObject_0).
11+
Future<QueryObjectResult<T>> queryObjectCommon<T>(
12+
Object queryable,
13+
String query, [
14+
QueryArguments? arguments,
15+
]) {
16+
final isCorrectType = arguments is List ||
17+
arguments is Map<String, dynamic> ||
18+
arguments == null;
19+
20+
if (!isCorrectType) {
21+
throw ArgumentError.value(
22+
arguments,
23+
'arguments',
24+
'Accepted types are List<any> and Map<String, any>.',
25+
);
26+
}
27+
28+
return callFutureMethod(
29+
queryable,
30+
'queryObject',
31+
[
32+
query,
33+
if (arguments != null) arguments,
34+
],
35+
);
36+
}

lib/src/transaction.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'dart:js_interop';
22

3+
import 'package:deno_postgres_interop/src/query_object.dart';
34
import 'package:deno_postgres_interop/src/query_object_result.dart';
45
import 'package:deno_postgres_interop/src/util.dart';
56

@@ -16,9 +17,9 @@ extension TransactionProps on Transaction {
1617
Future<void> commit() => callFutureMethod(this, 'commit');
1718

1819
/// [[email protected]/Transaction/queryObject](https://deno.land/x/[email protected]/mod.ts?s=Transaction#method_queryObject_0).
19-
Future<QueryObjectResult<T>> queryObject<T>(String query) => callFutureMethod(
20-
this,
21-
'queryObject',
22-
[query],
23-
);
20+
Future<QueryObjectResult<T>> queryObject<T>(
21+
String query, [
22+
QueryArguments? arguments,
23+
]) =>
24+
queryObjectCommon(this, query, arguments);
2425
}

0 commit comments

Comments
 (0)