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/', _updateUser); router.delete('/user/', _deleteUser); return router; } Future _getAllUsers(Request request) async { final users = await database.getAllUsers(); return Response(200, body: jsonEncode(users.map((u) => u.toMap()).toList())); } Future _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 _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 _deleteUser(Request request) async { final id = int.parse(request.params['id']!); await database.deleteUser(id); return Response(204); } }