package Ġorg . k ent unc . bit tr ader . c andle . api . infrastructure . repository . dao Ċ Ċ import Ġkotlinx . coroutines . reactor . await Single OrNull Ċ import Ġorg . k ent unc . bit tr ader . c andle . api . infrastructure . repository . entity . Strategy Params Entity Ċ import Ġorg . k ent unc . bit tr ader . c andle . api . infrastructure . repository . entity . Strategy Params PrimaryKey Ċ import Ġorg . k ent unc . bit tr ader . c andle . api . infrastructure . repository . entity . latest Ċ import Ġorg . springframework . data . r 2 dbc . core . R 2 dbc Entity Template Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ class ĠStrategy Params Dao ( private Ġval Ġtemplate : ĠR 2 dbc Entity Template ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġ< T Ġ: ĠStrategy Params Entity > Ġselect Latest One ( ĊĠĠĠĠĠĠĠ Ġprimary Key : ĠStrategy Params PrimaryKey , ĊĠĠĠĠĠĠĠ Ġentity Type : ĠClass < T > ĊĠĠĠ Ġ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtemplate . select ( entity Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. matching ( primaryKey . latest ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. await Single OrNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġ< T Ġ: ĠStrategy Params Entity > Ġinsert ( entity : ĠT , Ġentity Type : ĠClass < T >): ĠVoid ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtemplate . insert ( entity Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. using ( entity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. await Single OrNull () ĊĠĠĠ Ġ} Ċ } Ċ