dart user service, dependency injection with riverpod
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import 'package:backend_dart/infrastructure/persistence/database.dart';
|
||||
import 'package:shelf/shelf.dart';
|
||||
import 'package:shelf_router/shelf_router.dart';
|
||||
|
||||
part 'user_service.g.dart'; // generated with 'pub run build_runner build'
|
||||
|
||||
class UserService {
|
||||
final Database database;
|
||||
UserService(this.database);
|
||||
|
||||
@Route.get('/')
|
||||
Future<Response> listUsers(Request request) async {
|
||||
return Response.ok('["user1"]');
|
||||
}
|
||||
|
||||
@Route.get('/<userId>')
|
||||
Future<Response> fetchUser(Request request, String userId) async {
|
||||
final result = await database.users.findById(userId);
|
||||
if (result != null) {
|
||||
return Response.ok(result);
|
||||
}
|
||||
return Response.notFound('no such user');
|
||||
}
|
||||
|
||||
// Create router using the generate function defined in 'userservice.g.dart'.
|
||||
Router get router => _$UserServiceRouter(this);
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'user_service.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// ShelfRouterGenerator
|
||||
// **************************************************************************
|
||||
|
||||
Router _$UserServiceRouter(UserService service) {
|
||||
final router = Router();
|
||||
router.add(
|
||||
'GET',
|
||||
r'/',
|
||||
service.listUsers,
|
||||
);
|
||||
router.add(
|
||||
'GET',
|
||||
r'/<userId>',
|
||||
service.fetchUser,
|
||||
);
|
||||
return router;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import 'package:backend_dart/application/user_service/user_service.dart';
|
||||
import 'package:backend_dart/infrastructure/persistence/database_provider.dart';
|
||||
import 'package:riverpod/riverpod.dart';
|
||||
|
||||
final userServiceProvider = Provider<UserService>((ref) {
|
||||
final database = ref.read(databaseProvider);
|
||||
return UserService(database);
|
||||
});
|
||||
Reference in New Issue
Block a user