1.0.7
This commit is contained in:
parent
24d45e64b5
commit
550a334c66
4 changed files with 41 additions and 10 deletions
|
@ -1,6 +1,5 @@
|
|||
# rethink
|
||||
|
||||
[![version 1.0.6](https://img.shields.io/badge/pub-1.0.6-brightgreen.svg)](https://pub.dartlang.org/packages/angel_rethink)
|
||||
[![version 1.0.7](https://img.shields.io/badge/pub-1.0.7-brightgreen.svg)](https://pub.dartlang.org/packages/angel_rethink)
|
||||
[![build status](https://travis-ci.org/angel-dart/rethink.svg?branch=master)](https://travis-ci.org/angel-dart/rethink)
|
||||
|
||||
RethinkDB-enabled services for the Angel framework.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'package:angel_framework/angel_framework.dart';
|
||||
import 'package:json_god/json_god.dart' as god;
|
||||
import 'package:rethinkdb_driver2/rethinkdb_driver2.dart';
|
||||
|
@ -54,7 +55,7 @@ class RethinkService extends Service {
|
|||
|
||||
RqlQuery _getQueryInner(RqlQuery query, Map params) {
|
||||
if (params == null || !params.containsKey('query'))
|
||||
return null;
|
||||
return query;
|
||||
else {
|
||||
if (params['query'] is RqlQuery)
|
||||
return params['query'];
|
||||
|
@ -179,11 +180,42 @@ class RethinkService extends Service {
|
|||
}
|
||||
|
||||
@override
|
||||
Future modify(id, data, [Map params]) => update(id, data, params);
|
||||
Future modify(id, data, [Map params]) async {
|
||||
var d = _serialize(data);
|
||||
|
||||
if (d is Map && d.containsKey('id')) {
|
||||
try {
|
||||
await read(d['id'], params);
|
||||
} on AngelHttpException catch (e) {
|
||||
if (e.statusCode == HttpStatus.NOT_FOUND)
|
||||
return await create(data, params);
|
||||
else
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
var query = buildQuery(table.get(id?.toString()), params).update(d);
|
||||
await _sendQuery(query);
|
||||
return await read(id, params);
|
||||
}
|
||||
|
||||
@override
|
||||
Future update(id, data, [Map params]) async {
|
||||
var query = buildQuery(table.get(id?.toString()), params).update(data);
|
||||
var d = _serialize(data);
|
||||
|
||||
if (d is Map && d.containsKey('id')) {
|
||||
try {
|
||||
await read(d['id'], params);
|
||||
} on AngelHttpException catch (e) {
|
||||
if (e.statusCode == HttpStatus.NOT_FOUND)
|
||||
return await create(data, params);
|
||||
else
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
if (d is Map && !d.containsKey('id')) d['id'] = id.toString();
|
||||
var query = buildQuery(table.get(id?.toString()), params).replace(d);
|
||||
await _sendQuery(query);
|
||||
return await read(id, params);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name: angel_rethink
|
||||
version: 1.0.6
|
||||
version: 1.0.7
|
||||
description: RethinkDB-enabled services for the Angel framework.
|
||||
author: Tobe O <thosakwe@gmail.com>
|
||||
environment:
|
||||
|
|
|
@ -19,9 +19,9 @@ main() {
|
|||
app = new Angel();
|
||||
app.use('/todos', new RethinkService(conn, r.table('todos')));
|
||||
|
||||
app.onError((e, req, res) async {
|
||||
app.errorHandler = (e, req, res) async {
|
||||
print('Whoops: $e');
|
||||
});
|
||||
};
|
||||
|
||||
app.fatalErrorStream.listen((e) {
|
||||
print('Whoops: ${e.error}');
|
||||
|
@ -55,13 +55,13 @@ main() {
|
|||
expect(result['completed'], equals(todo.completed));
|
||||
});
|
||||
|
||||
test('update', () async {
|
||||
test('modify', () async {
|
||||
var todo = new Todo(title: 'Clean your room');
|
||||
var creation = await todoService.create(todo.toJson());
|
||||
print('Creation: $creation');
|
||||
|
||||
var id = creation['id'];
|
||||
var result = await todoService.update(id, {'title': 'Eat healthy'});
|
||||
var result = await todoService.modify(id, {'title': 'Eat healthy'});
|
||||
|
||||
print('Response: $result');
|
||||
expect(result, isMap);
|
||||
|
|
Loading…
Reference in a new issue