Readdata for map and anon

This commit is contained in:
Tobe O 2019-04-20 12:15:09 -04:00
parent 2004877696
commit 0bb19fe7bc
4 changed files with 18 additions and 5 deletions

View file

@ -1,3 +1,7 @@
# 2.0.0-rc.7
* `AnonymousService` can override `readData`.
* `Service.map` now overrides `readData`.
# 2.0.0-rc.6
* Make `redirect` and `download` methods asynchronous.

View file

@ -1,5 +1,6 @@
import 'dart:async';
import 'request_context.dart';
import 'response_context.dart';
import 'service.dart';
/// An easy helper class to create one-off services without having to create an entire class.
@ -17,8 +18,9 @@ class AnonymousService<Id, Data> extends Service<Id, Data> {
FutureOr<Data> create(Data data, [Map<String, dynamic> params]),
FutureOr<Data> modify(Id id, Data data, [Map<String, dynamic> params]),
FutureOr<Data> update(Id id, Data data, [Map<String, dynamic> params]),
FutureOr<Data> remove(Id id, [Map<String, dynamic> params])})
: super() {
FutureOr<Data> remove(Id id, [Map<String, dynamic> params]),
FutureOr<Data> Function(RequestContext, ResponseContext) readData})
: super(readData: readData) {
_index = index;
_read = read;
_create = create;

View file

@ -160,8 +160,15 @@ class Service<Id, Data> extends Routable {
/// using two converter functions.
///
/// Handy utility for handling data in a type-safe manner.
Service<Id, U> map<U>(U Function(Data) encoder, Data Function(U) decoder) {
Service<Id, U> map<U>(U Function(Data) encoder, Data Function(U) decoder,
{FutureOr<U> Function(RequestContext, ResponseContext) readData}) {
readData ??= (req, res) async {
var inner = await this.readData(req, res);
return encoder(inner);
};
return new AnonymousService<Id, U>(
readData: readData,
index: ([params]) {
return index(params).then((it) => it.map(encoder).toList());
},

View file

@ -1,5 +1,5 @@
name: angel_framework
version: 2.0.0-rc.6
version: 2.0.0-rc.7
description: A high-powered HTTP server with dependency injection, routing and much more.
author: Tobe O <thosakwe@gmail.com>
homepage: https://github.com/angel-dart/angel_framework