package Ġcom . vl ad sch . kotlin . jdbc Ċ Ċ import Ġjava . sql . Callable Statement Ċ import Ġjava . sql . PreparedStatement Ċ import Ġjava . sql . ResultSet Ċ import Ġjavax . json . JsonArray Ċ import Ġjavax . json . JsonObject Ċ Ċ interface ĠSession Ġ: ĠAuto Closeable Ġ{ ĊĠĠĠ Ġval Ġconnection : ĠConnection ĊĠĠĠ Ġval Ġauto Generated Keys : ĠList < String > ĊĊĠĠĠ Ġfun Ġuse ( block : Ġ( Session ) Ġ-> ĠUnit ) ĊĠĠĠ Ġfun Ġprepare ( query : ĠSql Query , Ġreturn Generated Keys : ĠBoolean Ġ= Ġfalse ): ĠPreparedStatement ĊĠĠĠ Ġfun Ġ< A > Ġquery ( query : ĠSql Query , Ġconsumer : Ġ( ResultSet ) Ġ-> ĠA ): ĠA ĊĠĠĠ Ġfun Ġ< A > Ġexecute With Keys ( query : ĠSql Query , Ġconsumer : Ġ( PreparedStatement ) Ġ-> ĠA ): ĠA ? ĊĠĠĠ Ġfun Ġ< A > Ġexecute ( query : ĠSql Query , Ġconsumer : Ġ( PreparedStatement ) Ġ-> ĠA ): ĠA ? ĊĠĠĠ Ġfun Ġ< A > Ġupdate With Keys ( query : ĠSql Query , Ġconsumer : Ġ( PreparedStatement ) Ġ-> ĠA ): ĠA ? ĊĠĠĠ Ġfun Ġ< A > Ġupdate ( query : ĠSql Query , Ġconsumer : Ġ( PreparedStatement ) Ġ-> ĠA ): ĠA ? ĊĠĠĠ Ġfun Ġ< A > Ġlist ( query : ĠSql Query , Ġextractor : Ġ( Row ) Ġ-> ĠA ): ĠList < A > ĊĠĠĠ Ġfun Ġjson Array ( query : ĠSql Query , Ġextractor : Ġ( Row ) Ġ-> ĠJsonObject ): ĠJson Array ĊĠĠĠ Ġfun Ġcount ( query : ĠSql Query ): ĠInt ĊĠĠĠ Ġfun Ġ< A > Ġfirst ( query : ĠSql Query , Ġextractor : Ġ( Row ) Ġ-> ĠA ): ĠA ? ĊĠĠĠ Ġfun Ġ< K , ĠA > Ġhash Map ( query : ĠSql Query , Ġkey Extractor : Ġ( Row ) Ġ-> ĠK , Ġextractor : Ġ( Row ) Ġ-> ĠA ): ĠMap < K , ĠA > ĊĠĠĠ Ġfun ĠjsonObject ( query : ĠSql Query , Ġkey Extractor : Ġ( Row ) Ġ-> ĠString , Ġextractor : Ġ( Row ) Ġ-> ĠJsonObject ): ĠJsonObject ĊĠĠĠ Ġfun ĠforEach ( query : ĠSql Query , Ġoperator : Ġ( Row ) Ġ-> ĠUnit ): ĠUnit ĊĠĠĠ Ġfun ĠforEach ( query : ĠSql Call , Ġstmt Proc : Ġ( Callable Statement ) Ġ-> ĠUnit , Ġoperator : Ġ( rs : ĠResultSet , Ġindex : ĠInt ) Ġ-> ĠUnit ): ĠUnit ĊĠĠĠ Ġfun Ġexecute ( query : ĠSql Query ): ĠBoolean ĊĠĠĠ Ġfun Ġupdate ( query : ĠSql Query ): ĠInt ĊĠĠĠ Ġfun Ġupdate Get Long Id ( query : ĠSql Query ): ĠLong ? ĊĠĠĠ Ġfun Ġupdate GetId ( query : ĠSql Query ): ĠInt ? ĊĠĠĠ Ġfun Ġ< A > Ġupdate GetKey ( query : ĠSql Query , Ġextractor : Ġ( Row ) Ġ-> ĠA ): ĠA ? ĊĠĠĠ Ġfun Ġupdate Get Long Ids ( query : ĠSql Query ): ĠList < Long >? ĊĠĠĠ Ġfun Ġupdate Get Ids ( query : ĠSql Query ): ĠList < Int >? ĊĠĠĠ Ġfun Ġ< A > Ġupdate Get Keys ( query : ĠSql Query , Ġextractor : Ġ( Row ) Ġ-> ĠA ): ĠList < A >? ĊĠĠĠ Ġfun Ġ< A > Ġtransaction ( operation : Ġ( Transaction ) Ġ-> ĠA ): ĠA ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ċ } Ċ