Skip to content

Commit f2ea369

Browse files
authored
feat(cloud_firestore_odm): Add support for DateTime/Timestamp/GeoPoint (#8563)
1 parent 81ec08f commit f2ea369

File tree

13 files changed

+2422
-14
lines changed

13 files changed

+2422
-14
lines changed
Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,42 @@
11
# This file tracks properties of this Flutter project.
22
# Used by Flutter tool to assess capabilities and perform upgrades etc.
33
#
4-
# This file should be version controlled and should not be manually edited.
4+
# This file should be version controlled.
55

66
version:
7-
revision: 18116933e77adc82f80866c928266a5b4f1ed645
8-
channel: stable
7+
revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
8+
channel: dev
99

1010
project_type: app
11+
12+
# Tracks metadata for the flutter migrate command
13+
migration:
14+
platforms:
15+
- platform: root
16+
create_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
17+
base_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
18+
- platform: android
19+
create_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
20+
base_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
21+
- platform: ios
22+
create_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
23+
base_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
24+
- platform: macos
25+
create_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
26+
base_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
27+
- platform: web
28+
create_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
29+
base_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
30+
- platform: windows
31+
create_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
32+
base_revision: 8662e22bac54c71bc4fa5a4f37e9ee80bfd08a4e
33+
34+
# User provided section
35+
36+
# List of Local paths (relative to this file) that should be
37+
# ignored by the migrate tool.
38+
#
39+
# Files that are not part of the templates will be ignored by default.
40+
unmanaged_files:
41+
- 'lib/main.dart'
42+
- 'ios/Runner.xcodeproj/project.pbxproj'
Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,25 @@
11
targets:
22
$default:
33
builders:
4+
cloud_firestore_odm_generator:
5+
enabled: true
6+
generate_for:
7+
include:
8+
- lib/*
9+
- lib/**
10+
- test_driver/integration/*
11+
- test_driver/integration/**/*
412
json_serializable:
13+
enabled: true
14+
generate_for:
15+
include:
16+
- lib/*
17+
- lib/**
18+
- test_driver/integration/*
19+
- test_driver/integration/**/*
520
options:
6-
create_field_map: true
21+
create_field_map: true
22+
source_gen|combining_builder:
23+
options:
24+
ignore_for_file:
25+
- 'type=lint'

packages/cloud_firestore_odm/cloud_firestore_odm/example/lib/integration.g.dart

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import 'package:cloud_firestore/cloud_firestore.dart';
2+
import 'package:cloud_firestore_odm/cloud_firestore_odm.dart';
3+
import 'package:json_annotation/json_annotation.dart';
4+
5+
part 'query.g.dart';
6+
7+
@Collection<DateTimeQuery>('firestore-example-app/42/date-time')
8+
final dateTimeQueryRef = DateTimeQueryCollectionReference();
9+
10+
@JsonSerializable()
11+
@FirestoreDateTimeConverter()
12+
class DateTimeQuery {
13+
DateTimeQuery(this.time);
14+
final DateTime time;
15+
}
16+
17+
class FirestoreDateTimeConverter extends JsonConverter<DateTime, Timestamp> {
18+
const FirestoreDateTimeConverter();
19+
@override
20+
DateTime fromJson(Timestamp json) => json.toDate();
21+
22+
@override
23+
Timestamp toJson(DateTime object) => Timestamp.fromDate(object);
24+
}
25+
26+
@Collection<TimestampQuery>('firestore-example-app/42/timestamp-time')
27+
final timestampQueryRef = TimestampQueryCollectionReference();
28+
29+
@JsonSerializable()
30+
@FirestoreTimestampConverter()
31+
class TimestampQuery {
32+
TimestampQuery(this.time);
33+
final Timestamp time;
34+
}
35+
36+
@Collection<GeoPointQuery>('firestore-example-app/42/geopoint-time')
37+
final geoPointQueryRef = GeoPointQueryCollectionReference();
38+
39+
@JsonSerializable()
40+
@FirestoreGeoPointConverter()
41+
class GeoPointQuery {
42+
GeoPointQuery(this.point);
43+
final GeoPoint point;
44+
}
45+
46+
@Collection<DocumentReferenceQuery>('firestore-example-app/42/doc-ref')
47+
final documentReferenceRef = DocumentReferenceQueryCollectionReference();
48+
49+
@JsonSerializable()
50+
@FirestoreDocumentReferenceConverter()
51+
class DocumentReferenceQuery {
52+
DocumentReferenceQuery(this.ref);
53+
54+
final DocumentReference<Map<String, dynamic>> ref;
55+
}

0 commit comments

Comments
 (0)