@@ -12,6 +12,7 @@ use academy_core_paypal_impl::PaypalFeatureConfig;
1212use academy_core_premium_impl:: PremiumFeatureConfig ;
1313use academy_core_session_impl:: SessionFeatureConfig ;
1414use academy_core_user_impl:: UserFeatureConfig ;
15+ use academy_data:: course:: CourseRepository ;
1516use academy_di:: provider;
1617use academy_extern_impl:: {
1718 paypal:: PaypalApiServiceConfig , recaptcha:: RecaptchaApiServiceConfig ,
@@ -34,6 +35,7 @@ provider! {
3435 database: Database ,
3536 cache: Cache ,
3637 email: Email ,
38+ course_repository: CourseRepository ,
3739 ..config: ConfigProvider {
3840 // API
3941 RestServerConfig ,
@@ -67,13 +69,20 @@ provider! {
6769}
6870
6971impl Provider {
70- pub fn new ( config : ConfigProvider , database : Database , cache : Cache , email : Email ) -> Self {
72+ pub fn new (
73+ config : ConfigProvider ,
74+ database : Database ,
75+ cache : Cache ,
76+ email : Email ,
77+ course_repository : CourseRepository ,
78+ ) -> Self {
7179 Self {
7280 _cache : Default :: default ( ) ,
7381 database,
7482 cache,
7583 email,
7684 config,
85+ course_repository,
7786 }
7887 }
7988
@@ -89,8 +98,16 @@ impl Provider {
8998 let email = crate :: email:: connect ( & config. email )
9099 . await
91100 . context ( "Failed to connect to email server" ) ?;
101+ let course_repository = CourseRepository :: load ( & config. course . course_dir )
102+ . context ( "Failed to load course repository" ) ?;
92103
93- Ok ( Self :: new ( config_provider, database, cache, email) )
104+ Ok ( Self :: new (
105+ config_provider,
106+ database,
107+ cache,
108+ email,
109+ course_repository,
110+ ) )
94111 }
95112}
96113
@@ -318,8 +335,10 @@ mod tests {
318335 let database = PostgresDatabase :: dummy ( ) . await ;
319336 let cache = ValkeyCache :: dummy ( ) . await ;
320337 let email = EmailServiceImpl :: dummy ( ) . await ;
338+ let course_repository = CourseRepository :: default ( ) ;
321339
322- let mut provider = Provider :: new ( config_provider, database, cache, email) ;
340+ let mut provider =
341+ Provider :: new ( config_provider, database, cache, email, course_repository) ;
323342 let _: RestServer = provider. provide ( ) ;
324343 }
325344}
0 commit comments