package Ġcom . just ai . ja ic f . context . manager . mongo Ċ Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson ObjectMapper Ċ import Ġcom . just ai . ja ic f . api . Bot Request Ċ import Ġcom . just ai . ja ic f . api . Bot Response Ċ import Ġcom . just ai . ja ic f . context . Bot Context Ċ import Ġcom . just ai . ja ic f . context . manager . Bot Context Manager Ċ import Ġcom . mongodb . client . Mongo Collection Ċ import Ġcom . mongodb . client . model . Filters Ċ import Ġcom . mongodb . client . model . Update Options Ċ import Ġorg . bson . Document Ċ Ċ class ĠMongo Bot Context Manager ( ĊĠĠĠ Ġprivate Ġval Ġcollection : ĠMongo Collection < Document > Ċ ): ĠBot Context Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmapper Ġ= Ġj ack son ObjectMapper (). enable Default Typing () ĊĊĠĠĠ Ġoverride Ġfun Ġload Context ( request : ĠBot Request ): ĠBot Context Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcollection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find ( Filters . eq ("_ id ", Ġrequest . clientId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. iterator (). try Next ()?. let Ġ{ Ġdoc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġmapper . readValue ( doc . toJson (), ĠBot Context Model :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBot Context ( model ._ id , Ġmodel . dialog Context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġmodel . result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . put All ( model . client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . put All ( model . session ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠBot Context ( request . clientId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Context ( bot Context : ĠBot Context , Ġrequest : ĠBot Request ?, Ġresponse : ĠBot Response ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠBot Context Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ id Ġ= Ġbot Context . clientId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġbot Context . result , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Ġ= Ġbot Context . client . toMap (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġ= Ġbot Context . session . toMap (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Context Ġ= Ġbot Context . dialog Context ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠDocument . parse ( mapper . writeValue AsString ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . replace One ( Filters . eq ("_ id ", Ġ_ id ), Ġdoc , ĠUpdate Options (). upsert ( true )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }