/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠD ario ĠS co pp el let ti , Ġ< http :// www . sco pp el let ti . it />. Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" UNUSED ") Ċ Ċ package Ġit . sco pp el let ti . kb . database . inject Ċ Ċ import Ġcom . mongodb . Mongo Client Settings Ċ import Ġcom . mongodb . Write Concern Ċ import Ġcom . mongodb . client . Mongo Clients Ċ import Ġcom . mongodb . client . Mongo Database Ċ import Ġdagger . Bind s Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġit . sco pp el let ti . kb . database . Article UseCase Impl Ċ import Ġit . sco pp el let ti . kb . database . model . Article Data Ċ import Ġit . sco pp el let ti . kb . domain . Article UseCase Ċ import Ġit . sco pp el let ti . mongo . config . Mongo Config Ċ import Ġit . sco pp el let ti . mongo . config . apply Config Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ import Ġorg . bson . code cs . configuration . Codec Regist ries Ċ import Ġorg . bson . code cs . pojo . Po jo Codec Provider Ċ Ċ @ Module Ċ abstract Ġclass ĠK b Database Module Ġ{ ĊĊĠĠĠ Ġ@ Bind s ĊĠĠĠ Ġabstract Ġfun Ġbind Article UseCase ( obj : ĠArticle UseCase Impl ): ĠArticle UseCase ĊĊĠĠĠ Ġ@ Module ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Provides ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Singleton ĊĠĠĠĠĠĠĠ Ġfun Ġprovide Mongo Client (): ĠMongo Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠMongo Config . load () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcodec Registry Ġ= ĠCodec Regist ries . from Regist ries ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMongo Client Settings . getDefault Codec Registry (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCodec Regist ries . from Providers ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Codec Provider . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register ( Article Data :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserver Api Ġ= ĠServer Api . builder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. version ( Server ApiVersion . V 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠMongo Client Settings . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Config ( config ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. server Api ( server Api ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Concern ( Write Concern . W 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with W Timeout ( 2 5 0 0 , ĠTimeUnit . MILLISECONDS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. codec Registry ( codec Registry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMongo Clients . create ( settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġclient . get Database ( config . database ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }