Fixed some more memory service bugs
This commit is contained in:
parent
448c8dc99a
commit
babb07c814
1 changed files with 14 additions and 11 deletions
|
@ -7,7 +7,7 @@ class MemoryModel {
|
||||||
|
|
||||||
/// An in-memory [Service].
|
/// An in-memory [Service].
|
||||||
class MemoryService<T> extends Service {
|
class MemoryService<T> extends Service {
|
||||||
Map <int, MemoryModel> items = {};
|
List<MemoryModel> items = [];
|
||||||
|
|
||||||
MemoryService() :super() {
|
MemoryService() :super() {
|
||||||
if (!reflectType(T).isAssignableTo(reflectType(MemoryModel))) {
|
if (!reflectType(T).isAssignableTo(reflectType(MemoryModel))) {
|
||||||
|
@ -21,15 +21,18 @@ class MemoryService<T> extends Service {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List> index([Map params]) async {
|
Future<List> index([Map params]) async {
|
||||||
return items.keys
|
List result = [];
|
||||||
.where((index) => items[index] != null)
|
|
||||||
.map((index) => _makeJson(index, items[index]))
|
for (int i = 0; i < items.length; i++) {
|
||||||
.toList();
|
result.add(_makeJson(i, items[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future read(id, [Map params]) async {
|
Future read(id, [Map params]) async {
|
||||||
int desiredId = int.parse(id.toString());
|
int desiredId = int.parse(id.toString());
|
||||||
if (items.containsKey(desiredId)) {
|
if (items.length > desiredId) {
|
||||||
MemoryModel found = items[desiredId];
|
MemoryModel found = items[desiredId];
|
||||||
if (found != null) {
|
if (found != null) {
|
||||||
return _makeJson(desiredId, found);
|
return _makeJson(desiredId, found);
|
||||||
|
@ -43,7 +46,7 @@ class MemoryService<T> extends Service {
|
||||||
data, outputType: T);
|
data, outputType: T);
|
||||||
|
|
||||||
created.id = items.length;
|
created.id = items.length;
|
||||||
items[created.id] = created;
|
items.add(created);
|
||||||
return created;
|
return created;
|
||||||
/*} catch (e) {
|
/*} catch (e) {
|
||||||
throw new AngelHttpException.BadRequest(message: 'Invalid data.');
|
throw new AngelHttpException.BadRequest(message: 'Invalid data.');
|
||||||
|
@ -52,7 +55,7 @@ class MemoryService<T> extends Service {
|
||||||
|
|
||||||
Future modify(id, data, [Map params]) async {
|
Future modify(id, data, [Map params]) async {
|
||||||
int desiredId = int.parse(id.toString());
|
int desiredId = int.parse(id.toString());
|
||||||
if (items.containsKey(desiredId)) {
|
if (items.length > desiredId) {
|
||||||
try {
|
try {
|
||||||
Map existing = god.serializeObject(items[desiredId]);
|
Map existing = god.serializeObject(items[desiredId]);
|
||||||
data = mergeMap([existing, data]);
|
data = mergeMap([existing, data]);
|
||||||
|
@ -67,7 +70,7 @@ class MemoryService<T> extends Service {
|
||||||
|
|
||||||
Future update(id, data, [Map params]) async {
|
Future update(id, data, [Map params]) async {
|
||||||
int desiredId = int.parse(id.toString());
|
int desiredId = int.parse(id.toString());
|
||||||
if (items.containsKey(desiredId)) {
|
if (items.length > desiredId) {
|
||||||
try {
|
try {
|
||||||
items[desiredId] =
|
items[desiredId] =
|
||||||
(data is Map) ? god.deserializeDatum(data, outputType: T) : data;
|
(data is Map) ? god.deserializeDatum(data, outputType: T) : data;
|
||||||
|
@ -80,9 +83,9 @@ class MemoryService<T> extends Service {
|
||||||
|
|
||||||
Future remove(id, [Map params]) async {
|
Future remove(id, [Map params]) async {
|
||||||
int desiredId = int.parse(id.toString());
|
int desiredId = int.parse(id.toString());
|
||||||
if (items.containsKey(desiredId)) {
|
if (items.length > desiredId) {
|
||||||
MemoryModel item = items[desiredId];
|
MemoryModel item = items[desiredId];
|
||||||
items[desiredId] = null;
|
items.removeAt(desiredId);
|
||||||
return _makeJson(desiredId, item);
|
return _makeJson(desiredId, item);
|
||||||
} else throw new AngelHttpException.NotFound();
|
} else throw new AngelHttpException.NotFound();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue