Injecting the repository
Ok, so now we have our shared library working both for the frontend
and the backend
. We have our FilmRepository
trait and even a Postgres implementation of it. Now we need to inject the repository into our handlers.
If you take a look again at the main.rs
file of our api-shuttle
crate, you will see that we were already sharing the sqlx::PgPool
between the handlers.
We will do the same with the FilmRepository
trait.
Creating a PostgresFilmRepository
struct
Let's create a new instance of the PostgresFilmRepository
struct in the main.rs
file of our api-shuttle
crate:
- let pool = actix_web::web::Data::new(pool);
+ let film_repository = api_lib::film_repository::PostgresFilmRepository::new(pool);
+ let film_repository = actix_web::web::Data::new(film_repository);
- cfg.app_data(pool)
+ cfg.app_data(film_repository)
Once you apply this change, everything should compile and work as before.
Commit your changes:
git add .
git commit -m "inject film repository"