Skip to content

Commit b7a1f6c

Browse files
committed
Clean up the codebase. Update the example project by the RawQuery sample.
1 parent 225a298 commit b7a1f6c

9 files changed

+61
-147
lines changed

example/lib/database.g.dart

+1-38
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/lib/main.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class TasksListView extends StatelessWidget {
7070
Widget build(BuildContext context) {
7171
return Expanded(
7272
child: StreamBuilder<List<Task>>(
73-
stream: dao.findAllTasksAsStream(),
73+
stream: dao.findYesterdaysTasksByMessageAsStream('test'),
7474
builder: (_, snapshot) {
7575
if (!snapshot.hasData) return Container();
7676

example/lib/task_dao.dart

+15-13
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,21 @@ abstract class TaskDao {
1313
Stream<List<Task>> findAllTasksAsStream();
1414

1515
@rawQuery
16-
Stream<List<Task>> rawFindAllTasksAsStream(SQLiteQuery query);
17-
18-
@rawQuery
19-
Future<List<Task>> rawFindAllTasks(SQLiteQuery query);
20-
21-
@rawQuery
22-
Stream<Task?> rawFindTaskAsStream(SQLiteQuery query);
23-
24-
@rawQuery
25-
Future<Task?> rawFindTask(SQLiteQuery query);
26-
27-
@rawQuery
28-
Future<void> rawInsertionTask(SQLiteQuery query);
16+
Stream<List<Task>> rawQueryTasksAsStream(SQLiteQuery query);
17+
18+
Stream<List<Task>> findYesterdaysTasksByMessageAsStream(String message) {
19+
final timestamp = DateTime.now()
20+
.subtract(
21+
const Duration(days: 1),
22+
)
23+
.millisecondsSinceEpoch;
24+
return rawQueryTasksAsStream(SQLiteQuery(
25+
'SELECT * FROM task WHERE timestamp > ?1 AND message == ?2',
26+
arguments: [
27+
timestamp,
28+
message,
29+
]));
30+
}
2931

3032
@insert
3133
Future<void> insertTask(Task task);

floor_generator/lib/processor/base_query_method_processor.dart

+8-7
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,22 @@ import 'package:analyzer/dart/element/type.dart';
33
import 'package:collection/collection.dart';
44
import 'package:floor_generator/misc/extension/dart_type_extension.dart';
55
import 'package:floor_generator/misc/type_utils.dart';
6+
import 'package:floor_generator/processor/error/base_query_method_processor_error.dart';
67
import 'package:floor_generator/processor/processor.dart';
78
import 'package:floor_generator/value_object/query_method.dart';
89
import 'package:floor_generator/value_object/queryable.dart';
910

1011
abstract class BaseQueryMethodProcessor extends Processor<QueryMethod> {
1112
final MethodElement _methodElement;
1213
final List<Queryable> _queryables;
14+
final BaseQueryMethodProcessorError _processorError;
1315

1416
BaseQueryMethodProcessor(
1517
final MethodElement methodElement,
1618
final List<Queryable> queryables,
1719
) : _methodElement = methodElement,
18-
_queryables = queryables;
20+
_queryables = queryables,
21+
_processorError = BaseQueryMethodProcessorError(methodElement);
1922

2023
@override
2124
QueryMethod process() {
@@ -76,12 +79,10 @@ abstract class BaseQueryMethodProcessor extends Processor<QueryMethod> {
7679
final bool returnsStream,
7780
) {
7881
if (!rawReturnType.isDartAsyncFuture && !returnsStream) {
79-
onDoesNotReturnFutureNorStream();
82+
throw _processorError.doesNotReturnFutureNorStream;
8083
}
8184
}
8285

83-
void onDoesNotReturnFutureNorStream();
84-
8586
void _assertReturnsNullableSingle(
8687
final bool returnsStream,
8788
final bool returnsList,
@@ -90,7 +91,9 @@ abstract class BaseQueryMethodProcessor extends Processor<QueryMethod> {
9091
if (!returnsList &&
9192
!flattenedReturnType.isVoid &&
9293
!flattenedReturnType.isNullable) {
93-
onAssertReturnsNullableSingle(returnsStream);
94+
returnsStream
95+
? throw _processorError.doesNotReturnNullableStream
96+
: throw _processorError.doesNotReturnNullableFuture;
9497
}
9598
}
9699

@@ -102,6 +105,4 @@ abstract class BaseQueryMethodProcessor extends Processor<QueryMethod> {
102105
List<ParameterElement> parameters,
103106
Queryable? queryable,
104107
);
105-
106-
void onAssertReturnsNullableSingle(bool returnsStream);
107108
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import 'package:analyzer/dart/element/element.dart';
2+
import 'package:floor_generator/processor/error/processor_error.dart';
3+
import 'package:source_gen/source_gen.dart';
4+
5+
class BaseQueryMethodProcessorError {
6+
final MethodElement _methodElement;
7+
8+
BaseQueryMethodProcessorError(final MethodElement methodElement)
9+
: _methodElement = methodElement;
10+
11+
InvalidGenerationSourceError get doesNotReturnFutureNorStream {
12+
return InvalidGenerationSourceError(
13+
'All queries have to return a Future or Stream.',
14+
todo: 'Define the return type as Future or Stream.',
15+
element: _methodElement,
16+
);
17+
}
18+
19+
ProcessorError get doesNotReturnNullableStream {
20+
return ProcessorError(
21+
message: 'Queries returning streams of single elements might emit null.',
22+
todo:
23+
'Make the method return a Stream of a nullable type e.g. Stream<Person?>.',
24+
element: _methodElement,
25+
);
26+
}
27+
28+
ProcessorError get doesNotReturnNullableFuture {
29+
return ProcessorError(
30+
message: 'Queries returning single elements might return null.',
31+
todo:
32+
'Make the method return a Future of a nullable type e.g. Future<Person?>.',
33+
element: _methodElement,
34+
);
35+
}
36+
}

floor_generator/lib/processor/error/query_method_processor_error.dart

-18
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,4 @@ class QueryMethodProcessorError {
2323
element: _methodElement,
2424
);
2525
}
26-
27-
ProcessorError get doesNotReturnNullableStream {
28-
return ProcessorError(
29-
message: 'Queries returning streams of single elements might emit null.',
30-
todo:
31-
'Make the method return a Stream of a nullable type e.g. Stream<Person?>.',
32-
element: _methodElement,
33-
);
34-
}
35-
36-
ProcessorError get doesNotReturnNullableFuture {
37-
return ProcessorError(
38-
message: 'Queries returning single elements might return null.',
39-
todo:
40-
'Make the method return a Future of a nullable type e.g. Future<Person?>.',
41-
element: _methodElement,
42-
);
43-
}
4426
}

floor_generator/lib/processor/error/raw_query_method_processor_error.dart

-34
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,6 @@ class RawQueryMethodProcessorError {
1616
);
1717
}
1818

19-
InvalidGenerationSourceError get queryArgumentsAndMethodParametersDoNotMatch {
20-
return InvalidGenerationSourceError(
21-
'SQL query arguments and method parameters have to match.',
22-
todo: 'Make sure to supply one parameter per SQL query argument.',
23-
element: _methodElement,
24-
);
25-
}
26-
27-
InvalidGenerationSourceError get doesNotReturnFutureNorStream {
28-
return InvalidGenerationSourceError(
29-
'All queries have to return a Future or Stream.',
30-
todo: 'Define the return type as Future or Stream.',
31-
element: _methodElement,
32-
);
33-
}
34-
3519
ProcessorError queryMethodParameterIsNullable(
3620
final ParameterElement parameterElement,
3721
) {
@@ -43,22 +27,4 @@ class RawQueryMethodProcessorError {
4327
element: _methodElement,
4428
);
4529
}
46-
47-
ProcessorError get doesNotReturnNullableStream {
48-
return ProcessorError(
49-
message: 'Queries returning streams of single elements might emit null.',
50-
todo:
51-
'Make the method return a Stream of a nullable type e.g. Stream<Person?>.',
52-
element: _methodElement,
53-
);
54-
}
55-
56-
ProcessorError get doesNotReturnNullableFuture {
57-
return ProcessorError(
58-
message: 'Queries returning single elements might return null.',
59-
todo:
60-
'Make the method return a Future of a nullable type e.g. Future<Person?>.',
61-
element: _methodElement,
62-
);
63-
}
6430
}

floor_generator/lib/processor/query_method_processor.dart

-23
Original file line numberDiff line numberDiff line change
@@ -39,29 +39,6 @@ class QueryMethodProcessor extends BaseQueryMethodProcessor {
3939
return query;
4040
}
4141

42-
DartType _getFlattenedReturnType(
43-
final DartType rawReturnType,
44-
final bool returnsStream,
45-
final bool returnsList,
46-
) {
47-
final type = returnsStream
48-
? _methodElement.returnType.flatten()
49-
: _methodElement.library.typeSystem.flatten(rawReturnType);
50-
return returnsList ? type.flatten() : type;
51-
}
52-
53-
@override
54-
void onAssertReturnsNullableSingle(bool returnsStream) {
55-
returnsStream
56-
? throw _processorError.doesNotReturnNullableStream
57-
: throw _processorError.doesNotReturnNullableFuture;
58-
}
59-
60-
@override
61-
void onDoesNotReturnFutureNorStream() {
62-
throw _processorError.doesNotReturnFutureNorStream;
63-
}
64-
6542
@override
6643
QueryMethod onProcess(
6744
MethodElement methodElement,

floor_generator/lib/processor/raw_query_method_processor.dart

-13
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'package:floor_generator/value_object/queryable.dart';
99

1010
class RawQueryMethodProcessor extends BaseQueryMethodProcessor {
1111
final RawQueryMethodProcessorError _processorError;
12-
1312
final MethodElement _methodElement;
1413

1514
RawQueryMethodProcessor(
@@ -37,18 +36,6 @@ class RawQueryMethodProcessor extends BaseQueryMethodProcessor {
3736
}
3837
}
3938

40-
@override
41-
void onAssertReturnsNullableSingle(bool returnsStream) {
42-
returnsStream
43-
? throw _processorError.doesNotReturnNullableStream
44-
: throw _processorError.doesNotReturnNullableFuture;
45-
}
46-
47-
@override
48-
void onDoesNotReturnFutureNorStream() {
49-
throw _processorError.doesNotReturnFutureNorStream;
50-
}
51-
5239
@override
5340
QueryMethod onProcess(
5441
MethodElement methodElement,

0 commit comments

Comments
 (0)