You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
|
4 years ago
|
import 'dart:async';
|
||
|
|
|
||
|
|
import 'package:angel3_framework/angel3_framework.dart';
|
||
|
|
import 'package:dde_gesture_manager_api/apis.dart';
|
||
|
|
import 'package:dde_gesture_manager_api/src/models/scheme.dart';
|
||
|
|
import 'package:dde_gesture_manager_api/src/routes/controllers/middlewares.dart';
|
||
|
|
import 'package:logging/logging.dart';
|
||
|
|
import 'controller_extensions.dart';
|
||
|
|
|
||
|
|
Future configureServer(Angel app) async {
|
||
|
|
final _log = Logger('scheme_controller');
|
||
|
|
|
||
|
|
app.post(
|
||
|
|
Apis.scheme.upload,
|
||
|
|
chain(
|
||
|
|
[
|
||
|
|
jwtMiddleware(),
|
||
|
|
(req, res) async {
|
||
|
|
try {
|
||
|
|
var scheme = SchemeSerializer.fromMap(req.bodyAsMap);
|
||
|
|
var schemeQuery = SchemeQuery();
|
||
|
|
schemeQuery.where!.uuid.equals(scheme.uuid!);
|
||
|
|
var one = await schemeQuery.getOne(req.queryExecutor);
|
||
|
|
schemeQuery = SchemeQuery();
|
||
|
|
schemeQuery.values.copyFrom(scheme);
|
||
|
|
schemeQuery.values.uid = int.parse(req.user.id!);
|
||
|
|
if (one.isEmpty) {
|
||
|
|
await schemeQuery.insert(req.queryExecutor);
|
||
|
|
} else {
|
||
|
|
schemeQuery.whereId = int.parse(one.value.id!);
|
||
|
|
await schemeQuery.updateOne(req.queryExecutor);
|
||
|
|
}
|
||
|
|
} catch (e) {
|
||
|
|
_log.severe(e);
|
||
|
|
return res.unProcessableEntity();
|
||
|
|
}
|
||
|
|
return res.noContent();
|
||
|
|
},
|
||
|
|
],
|
||
|
|
),
|
||
|
|
);
|
||
|
|
|
||
|
|
app.get(
|
||
|
|
Apis.scheme.userUploads,
|
||
|
|
chain(
|
||
|
|
[
|
||
|
|
jwtMiddleware(),
|
||
|
|
(req, res) async {
|
||
|
|
var schemeQuery = SchemeQuery();
|
||
|
|
schemeQuery.where!.uid.equals(int.parse(req.user.id!));
|
||
|
|
schemeQuery.orderBy(SchemeFields.updatedAt, descending: true);
|
||
|
|
return schemeQuery.get(req.queryExecutor).then((value) => value.map((e) => {
|
||
|
|
'name': e.name,
|
||
|
|
'description': e.description,
|
||
|
|
}).toList());
|
||
|
|
},
|
||
|
|
],
|
||
|
|
),
|
||
|
|
);
|
||
|
|
}
|