package Ġcom . dev plant . chat service kotlin Ċ Ċ import Ġorg . springframework . boot . CommandLine Runner Ċ import Ġorg . springframework . boot . autoconfigure . SpringBoot Application Ċ import Ġorg . springframework . boot . run Application Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . data . mongodb . core . Collection Options Ċ import Ġorg . springframework . data . mongodb . core . Mongo Operations Ċ import Ġorg . springframework . data . mongodb . core . mapping . Document Ċ import Ġorg . springframework . data . mongodb . repository . Reactive Mongo Repository Ċ import Ġorg . springframework . data . mongodb . repository . T ailable Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . web . reactive . function . server . Server Response Ċ import Ġorg . springframework . web . reactive . function . server . Server Response . ok Ċ import Ġorg . springframework . web . reactive . function . server . body Ċ import Ġorg . springframework . web . reactive . function . server . body To Mono Ċ import Ġorg . springframework . web . reactive . function . server . router Ċ import Ġreactor . core . publisher . Flux Ċ import Ġjava . util .* Ċ Ċ @ SpringBoot Application Ċ class ĠChat Service Kotlin Application Ġ{ ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġmongo Init ( mongo Operations : ĠMongo Operations ) Ġ= ĠCommandLine Runner Ġ{ ĊĠĠĠĠĠĠĠ Ġmongo Operations . create Collection (" message ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollection Options ( 1 0 0 0 0 0 0 L , Ġ 5 0 0 0 L , Ġtrue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġroutes ( message Repo : ĠMessage Repo ) Ġ= Ġrouter Ġ{ ĊĠĠĠĠĠĠĠ ĠGET ("/ chat ", Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġok (). contentType ( MediaType . TEXT _ EVENT _ STREAM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( message Repo . findAll By Date After ( Date ())) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠPOST ("/ chat ", Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . body To Mono < Message >(). flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Repo . save ( it . copy ( date Ġ= ĠDate ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( Server Response . ok (). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠGET ("", Ġ{ Ġok (). contentType ( MediaType . TEXT _ HTML ). render (" index ") Ġ}) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ interface ĠMessage Repo Ġ: ĠReactive Mongo Repository < Message , ĠString > Ġ{ ĊĊĠĠĠ Ġ@ T ailable ĊĠĠĠ Ġfun ĠfindAll By Date After ( date : ĠDate ): ĠFlux < Message > Ċ } Ċ Ċ @ Document ( collection Ġ= Ġ" message ") Ċ data Ġclass ĠMessage ( var Ġvalue : ĠString , Ġvar Ġfrom : ĠString , Ġvar Ġdate : ĠDate ?) Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġrun Application < Chat Service Kotlin Application >(* args ) Ċ }