Fixed some more memory service bugs

This commit is contained in:
regiostech 2016-06-24 16:38:29 -04:00
parent 448c8dc99a
commit babb07c814

View file

@ -7,7 +7,7 @@ class MemoryModel {
/// An in-memory [Service].
class MemoryService<T> extends Service {
Map <int, MemoryModel> items = {};
List<MemoryModel> items = [];
MemoryService() :super() {
if (!reflectType(T).isAssignableTo(reflectType(MemoryModel))) {
@ -21,15 +21,18 @@ class MemoryService<T> extends Service {
}
Future<List> index([Map params]) async {
return items.keys
.where((index) => items[index] != null)
.map((index) => _makeJson(index, items[index]))
.toList();
List result = [];
for (int i = 0; i < items.length; i++) {
result.add(_makeJson(i, items[i]));
}
return result;
}
Future read(id, [Map params]) async {
int desiredId = int.parse(id.toString());
if (items.containsKey(desiredId)) {
if (items.length > desiredId) {
MemoryModel found = items[desiredId];
if (found != null) {
return _makeJson(desiredId, found);
@ -43,7 +46,7 @@ class MemoryService<T> extends Service {
data, outputType: T);
created.id = items.length;
items[created.id] = created;
items.add(created);
return created;
/*} catch (e) {
throw new AngelHttpException.BadRequest(message: 'Invalid data.');
@ -52,7 +55,7 @@ class MemoryService<T> extends Service {
Future modify(id, data, [Map params]) async {
int desiredId = int.parse(id.toString());
if (items.containsKey(desiredId)) {
if (items.length > desiredId) {
try {
Map existing = god.serializeObject(items[desiredId]);
data = mergeMap([existing, data]);
@ -67,7 +70,7 @@ class MemoryService<T> extends Service {
Future update(id, data, [Map params]) async {
int desiredId = int.parse(id.toString());
if (items.containsKey(desiredId)) {
if (items.length > desiredId) {
try {
items[desiredId] =
(data is Map) ? god.deserializeDatum(data, outputType: T) : data;
@ -80,9 +83,9 @@ class MemoryService<T> extends Service {
Future remove(id, [Map params]) async {
int desiredId = int.parse(id.toString());
if (items.containsKey(desiredId)) {
if (items.length > desiredId) {
MemoryModel item = items[desiredId];
items[desiredId] = null;
items.removeAt(desiredId);
return _makeJson(desiredId, item);
} else throw new AngelHttpException.NotFound();
}