package Ġorg . ion project . core . course Ċ Ċ import Ġorg . ion project . core . common . custom Exceptions . Resource NotFoundException Ċ import Ġorg . ion project . core . common . transaction . Transaction Manager Ċ import Ġorg . ion project . core . course . model . Course Ċ import Ġorg . ion project . core . course . sql . Course Data . GET _ CO UR SES _ QUERY Ċ import Ġorg . ion project . core . course . sql . Course Data . GET _ CO URSE _ QUERY Ċ import Ġorg . ion project . core . course . sql . Course Data . ID Ċ import Ġorg . ion project . core . course . sql . Course Data . LIMIT Ċ import Ġorg . ion project . core . course . sql . Course Data . OFFSET Ċ import Ġorg . ion project . core . course . sql . Course Mapper Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ class ĠCourse Repo Impl ( ĊĠĠĠ Ġprivate Ġval Ġtm : ĠTransaction Manager , ĊĠĠĠ Ġprivate Ġval Ġcourse Mapper : ĠCourse Mapper Ċ ) Ġ: ĠCourse Repo Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Courses ( page : ĠInt , Ġlimit : ĠInt ): ĠList < Course > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtm . run Ġ{ Ġhandle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle . createQuery ( GET _ CO UR SES _ QUERY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind ( OFFSET , Ġpage Ġ* Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind ( LIMIT , Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( course Mapper ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. list () ĊĠĠĠĠĠĠĠ Ġ} Ġas ĠList < Course > ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠResource NotFoundException (" No Ġresults Ġfor Ġpage Ġ$ page Ġwith Ġlimit Ġ$ limit .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Course ById ( id : ĠInt ): ĠCourse ? Ġ= Ġtm . run Ġ{ Ġhandle Ġ-> ĊĠĠĠĠĠĠĠ Ġhandle . createQuery ( GET _ CO URSE _ QUERY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind ( ID , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( course Mapper ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () ĊĠĠĠ Ġ} Ċ } Ċ