package Ġcom . ke ith m ack ay . api . db Ċ Ċ import Ġcom . google . inject . Inject Ċ import Ġcom . ke ith m ack ay . api . utils . getLogger Ċ import Ġcom . mongodb . client . Mongo Client Ċ import Ġcom . mongodb . client . Mongo Clients Ċ import Ġcom . mongodb . client . Mongo Collection Ċ import Ġcom . mongodb . client . model . Create Collection Options Ċ import Ġorg . bson . Document Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠDatabase ĠInternal Ġto Ġthe ĠCluster Ġto Ġreduce ĠLat ency Ċ Ġ*/ Ċ @ Singleton Ċ class ĠEp hemeral Database Ġ@ Inject Ċ internal Ġconstructor () Ġ: ĠID atabase Ġ{ ĊĠ Ġprivate Ġval Ġlog Ġ= Ġget Logger ( this :: class ) ĊĊĠ Ġprivate Ġval Ġclient : ĠMongo Client ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġlog . info (" Connecting Ġto Ġ( Ep hemeral ) Ġmongo Ġwith ĠDefault Ġoptions ") ĊĠĠĠ Ġthis . client Ġ= ĠMongo Clients . create (" mongodb :// db : 2 7 0 1 7 ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Collection ( db : ĠString , Ġname : ĠString ): ĠMongo Collection < Document > Ġ= ĊĠĠĠĠĠ Ġthis . client . get Database ( db ). get Collection ( name ) ĊĊĠ Ġoverride Ġfun Ġget Collection ( name : ĠString ): ĠMongo Collection < Document > Ġ= ĊĠĠĠĠĠ Ġget Collection (" api ", Ġname ) ĊĊĠ Ġoverride Ġfun Ġget J ongo Collection ( name : ĠString ?): Ġorg . j ongo . Mongo Collection Ġ= ĊĠĠĠĠĠ Ġthrow ĠNotImplementedError (" Not ĠUsing ĠJ ongo ") ĊĊĠ Ġprivate Ġfun Ġget Or Make Collection ( db : ĠString , Ġname : ĠString , Ġopts : ĠCreate Collection Options ?): ĠMongo Collection < Document > Ġ{ ĊĠĠĠ Ġval Ġdb Instance Ġ= Ġclient . get Database ( db ) ĊĠĠĠ Ġif Ġ(! db Instance . list Collection Names (). contains ( name )) Ġ{ ĊĠĠĠĠĠ Ġthis . log . info (" Collection Ġ$ name Ġdid Ġnot Ġexist , Ġcreating ") ĊĠĠĠĠĠ Ġif Ġ( opts Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Instance . create Collection ( name ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Instance . create Collection ( name , Ġopts ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġthis . get Collection ( db , Ġname ) ĊĠ Ġ} ĊĊĠ Ġfun Ġget Or Make Collection ( name : ĠString , Ġopts : ĠCreate Collection Options ): ĠMongo Collection < Document > Ġ= ĊĠĠĠĠĠ Ġthis . get Or Make Collection (" api ", Ġname , Ġopts ) ĊĊĠ Ġoverride Ġfun Ġget ConnectionString (): ĠString Ġ= Ġ"" Ċ }