Refactor database layer: convert to DatabaseProvider class with initialization
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import 'package:shelf/shelf.dart';
|
||||
import 'package:shelf_router/shelf_router.dart';
|
||||
import '../database/database_provider.dart';
|
||||
import 'dart:convert';
|
||||
|
||||
class UserRoutes {
|
||||
final DatabaseProvider database;
|
||||
|
||||
UserRoutes(this.database);
|
||||
|
||||
Router get routes {
|
||||
final router = Router();
|
||||
router.get('/user', _getAllUsers);
|
||||
router.post('/user', _createUser);
|
||||
router.put('/user/<id>', _updateUser);
|
||||
router.delete('/user/<id>', _deleteUser);
|
||||
return router;
|
||||
}
|
||||
|
||||
Future<Response> _getAllUsers(Request request) async {
|
||||
final users = await database.getAllUsers();
|
||||
return Response(200, body: jsonEncode(users.map((u) => u.toMap()).toList()));
|
||||
}
|
||||
|
||||
Future<Response> _createUser(Request request) async {
|
||||
final body = await request.readAsString();
|
||||
final data = jsonDecode(body);
|
||||
|
||||
final login = data['login'];
|
||||
final password = data['password'];
|
||||
|
||||
final user = await database.createUser(login, password);
|
||||
return Response(201, body: jsonEncode(user.toMap()));
|
||||
}
|
||||
|
||||
Future<Response> _updateUser(Request request) async {
|
||||
final id = int.parse(request.params['id']!);
|
||||
|
||||
final body = await request.readAsString();
|
||||
final data = jsonDecode(body);
|
||||
|
||||
final login = data['login'];
|
||||
final password = data['password'];
|
||||
|
||||
final user = await database.updateUser(id, login, password);
|
||||
return Response(200, body: jsonEncode(user.toMap()));
|
||||
}
|
||||
|
||||
Future<Response> _deleteUser(Request request) async {
|
||||
final id = int.parse(request.params['id']!);
|
||||
await database.deleteUser(id);
|
||||
return Response(204);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user