package Ġjav abot . dao Ċ Ċ import Ġcom . mongodb . Write Result Ċ import Ġjav abot . dao . util . QueryParam Ċ import Ġjav abot . model . Channel Ċ import Ġjav abot . model . K arma Ċ import Ġjav abot . model . criteria . K arma Criteria Ċ import Ġorg . mongodb . morph ia . Datastore Ċ import Ġjava . time . LocalDateTime Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠK arma Dao Ġ@ Inject Ġconstructor ( ds : ĠData store , Ġvar Ġchange Dao : ĠChange Dao , Ġvar Ġchannel Dao : ĠChannel Dao ) Ġ: ĊĠĠĠĠĠĠĠ ĠBase Dao < K arma >( ds , ĠK arma :: class . java ) Ġ{ ĊĊĠĠĠ Ġfun Ġget K arm as ( qp : ĠQuery Param ): ĠList < K arma > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġds . createQuery ( K arma :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( qp . has Sort ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery . order (( if Ġ( qp . sort Asc ) Ġ"" Ġelse Ġ"- ") Ġ+ Ġq p . sort ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġquery . offset ( qp . first ) ĊĠĠĠĠĠĠĠ Ġquery . limit ( qp . count ) ĊĠĠĠĠĠĠĠ Ġreturn Ġquery . asList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave ( channel : ĠChannel , Ġk arma : ĠK arma ) Ġ{ ĊĠĠĠĠĠĠĠ Ġk arma . updated Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġsuper . save ( karma ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind ( name : ĠString ): ĠK arma ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcriteria Ġ= ĠK arma Criteria ( ds ) ĊĠĠĠĠĠĠĠ Ġcriteria . upper Name (). equal ( name . toUpperCase ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġcriteria . query (). get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcount (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġds . createQuery ( K arma :: class . java ). count All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete All (): ĠWrite Result Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġds . delete ( ds . createQuery ( K arma :: class . java )) ĊĠĠĠ Ġ} Ċ }