11import 'dart:async' ;
22
33import 'package:json_api/document.dart' ;
4+ import 'package:json_api/query.dart' ;
45import 'package:json_api/server.dart' ;
56import 'package:uuid/uuid.dart' ;
67
78import 'dao.dart' ;
89import 'job_queue.dart' ;
910
10- class CarsController implements JsonApiController {
11+ class CarsController
12+ implements JsonApiController <JsonApiRequest , JsonApiResponse > {
1113 final Map <String , DAO > _dao;
1214
1315 final PaginationStrategy _pagination;
1416
1517 CarsController (this ._dao, this ._pagination);
1618
1719 @override
18- JsonApiResponse fetchCollection (String type, Uri uri ) {
19- final page = Page .fromUri (uri );
20+ JsonApiResponse fetchCollection (String type, JsonApiRequest request ) {
21+ final page = Page .fromUri (request.requestedUri );
2022 final dao = _getDaoOrThrow (type);
2123 final collection =
2224 dao.fetchCollection (_pagination.limit (page), _pagination.offset (page));
@@ -26,9 +28,9 @@ class CarsController implements JsonApiController {
2628
2729 @override
2830 JsonApiResponse fetchRelated (
29- String type, String id, String relationship, Uri uri ) {
31+ String type, String id, String relationship, JsonApiRequest request ) {
3032 final res = _fetchResourceOrThrow (type, id);
31- final page = Page .fromUri (uri );
33+ final page = Page .fromUri (request.requestedUri );
3234 if (res.toOne.containsKey (relationship)) {
3335 final id = res.toOne[relationship];
3436 final resource = _dao[id.type].fetchByIdAsResource (id.id);
@@ -47,10 +49,11 @@ class CarsController implements JsonApiController {
4749 }
4850
4951 @override
50- JsonApiResponse fetchResource (String type, String id, Uri uri) {
52+ JsonApiResponse fetchResource (
53+ String type, String id, JsonApiRequest request) {
5154 final dao = _getDaoOrThrow (type);
5255 final obj = dao.fetchById (id);
53- final include = Include .fromUri (uri );
56+ final include = Include .fromUri (request.requestedUri );
5457
5558 if (obj == null ) {
5659 return ErrorResponse .notFound (
@@ -74,7 +77,7 @@ class CarsController implements JsonApiController {
7477
7578 @override
7679 JsonApiResponse fetchRelationship (
77- String type, String id, String relationship, Uri uri ) {
80+ String type, String id, String relationship, JsonApiRequest request ) {
7881 final res = _fetchResourceOrThrow (type, id);
7982
8083 if (res.toOne.containsKey (relationship)) {
@@ -89,7 +92,8 @@ class CarsController implements JsonApiController {
8992 }
9093
9194 @override
92- JsonApiResponse deleteResource (String type, String id) {
95+ JsonApiResponse deleteResource (
96+ String type, String id, JsonApiRequest request) {
9397 final dao = _getDaoOrThrow (type);
9498
9599 final res = dao.fetchByIdAsResource (id);
@@ -105,7 +109,8 @@ class CarsController implements JsonApiController {
105109 }
106110
107111 @override
108- JsonApiResponse createResource (String type, Resource resource) {
112+ JsonApiResponse createResource (
113+ String type, Resource resource, JsonApiRequest request) {
109114 final dao = _getDaoOrThrow (type);
110115
111116 _throwIfIncompatibleTypes (type, resource);
@@ -140,7 +145,8 @@ class CarsController implements JsonApiController {
140145 }
141146
142147 @override
143- JsonApiResponse updateResource (String type, String id, Resource resource) {
148+ JsonApiResponse updateResource (
149+ String type, String id, Resource resource, JsonApiRequest request) {
144150 final dao = _getDaoOrThrow (type);
145151
146152 _throwIfIncompatibleTypes (type, resource);
@@ -156,8 +162,8 @@ class CarsController implements JsonApiController {
156162 }
157163
158164 @override
159- JsonApiResponse replaceToOne (
160- String type, String id, String relationship, Identifier identifier ) {
165+ JsonApiResponse replaceToOne (String type, String id, String relationship,
166+ Identifier identifier, JsonApiRequest request ) {
161167 final dao = _getDaoOrThrow (type);
162168
163169 dao.replaceToOne (id, relationship, identifier);
@@ -166,7 +172,7 @@ class CarsController implements JsonApiController {
166172
167173 @override
168174 JsonApiResponse replaceToMany (String type, String id, String relationship,
169- List <Identifier > identifiers) {
175+ List <Identifier > identifiers, JsonApiRequest request ) {
170176 final dao = _getDaoOrThrow (type);
171177
172178 dao.replaceToMany (id, relationship, identifiers);
@@ -175,7 +181,7 @@ class CarsController implements JsonApiController {
175181
176182 @override
177183 JsonApiResponse addToMany (String type, String id, String relationship,
178- List <Identifier > identifiers) {
184+ List <Identifier > identifiers, JsonApiRequest request ) {
179185 final dao = _getDaoOrThrow (type);
180186
181187 return ToManyResponse (
0 commit comments