package Ġcom . mov ied b . tv shows . di Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . mov ied b . core . di . Core Data Module Ċ import Ġcom . mov ied b . tv shows . data . Details Remote DataSource Ċ import Ġcom . mov ied b . tv shows . data . Details Repository Ċ import Ġcom . mov ied b . tv shows . data . Discover Remote DataSource Ċ import Ġcom . mov ied b . tv shows . data . Discover Repository Ċ import Ġcom . mov ied b . tv shows . data . db . TV Show Database Ċ import Ġcom . mov ied b . tv shows . data . local . Details Dao Ċ import Ġcom . mov ied b . tv shows . data . local . Discover Dao Ċ import Ġcom . mov ied b . tv shows . data . remote . Discover Service Ċ import Ġcom . mov ied b . tv shows . use cases . Discover TV Shows Use case Ċ import Ġcom . mov ied b . tv shows . use cases . TV Show Details Use case Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAn il ĠG ud igar Ġon Ġ 2 1 , Fe bruary , 2 0 2 1 Ċ Ġ*/ Ċ @ Module ( includes Ġ= Ġ[ Core Data Module :: class ]) Ċ class ĠTV Show Data Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Db ( app : ĠApplication ) Ġ= ĠTV Show Database . getInstance ( app ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Discover Dao ( db : ĠTV Show Database ): ĠDis cover Dao Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdb . discover Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Details Dao ( db : ĠTV Show Database ): ĠDetails Dao Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdb . details Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Discover TV Shows Use case ( repository : ĠDis cover Repository ): ĠDis cover TV Shows Use case Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDis cover TV Shows Use case ( repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Discover Repository ( ĊĠĠĠĠĠĠĠ Ġdao : ĠDis cover Dao , ĊĠĠĠĠĠĠĠ Ġremote DataSource : ĠDis cover Remote DataSource ĊĠĠĠ Ġ): ĠDis cover Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDis cover Repository ( dao , Ġremote DataSource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Discover Remote DataSource ( service : ĠDis cover Service ): ĠDis cover Remote DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDis cover Remote DataSource ( service ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide TV Show Details Use case ( repository : ĠDetails Repository ): ĠTV Show Details Use case Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTV Show Details Use case ( repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Details Repository ( ĊĠĠĠĠĠĠĠ Ġdao : ĠDetails Dao , ĊĠĠĠĠĠĠĠ Ġremote DataSource : ĠDetails Remote DataSource ĊĠĠĠ Ġ): ĠDetails Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDetails Repository ( dao , Ġremote DataSource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Details Remote DataSource ( service : ĠDis cover Service ): ĠDetails Remote DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDetails Remote DataSource ( service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Discover Service ( ret rofit : ĠRet rofit ): ĠDis cover Service Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Discover Service :: class . java ) Ċ Ċ }