package Ġcom . example . ui . books Ċ Ċ import Ġcom . example . model . DataManager MongoDB Ċ import Ġcom . example . ui . Endpoints Ċ import Ġcom . example . ui . login . Session Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . html . respond Html Template Ċ import Ġio . ktor . http . content . Part Data Ċ import Ġio . ktor . request . receive Multipart Ċ import Ġio . ktor . routing . Route Ċ import Ġio . ktor . routing . get Ċ import Ġio . ktor . routing . post Ċ import Ġio . ktor . sessions . get Ċ import Ġio . ktor . sessions . sessions Ċ import Ġkotlinx . html . i Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ fun ĠRoute . books (){ ĊĠĠĠ Ġget ( Endpoints . BOOK S . url ){ ĊĠĠĠĠĠĠĠ Ġcall . respond Html Template ( Book Template ( call . sessions . get < Session >(), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Manager MongoDB . INSTANCE . all Books ())){ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġpost ( Endpoints . DO BOOK SEARCH . url ){ ĊĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠLoggerFactory . getLogger (" Login View ") ĊĠĠĠĠĠĠĠ Ġval Ġmultipart Ġ= Ġcall . receive Multipart () ĊĠĠĠĠĠĠĠ Ġvar Ġsearch : ĠString Ġ= "" ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpart Ġ= Ġmultipart . read Part () Ġ?: Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( part ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPart Data . Form Item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Form Item : Ġ${ part . name } Ġ= Ġ${ part . value }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( part . name Ġ== Ġ" search ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Ġ= Ġpart . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpart . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsearch Books Ġ= ĠData Manager MongoDB . INSTANCE . search Books ( search ) ĊĠĠĠĠĠĠĠ Ġcall . respond Html Template ( Book Template ( call . sessions . get < Session >(), Ġsearch Books )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch filter { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Search Ġfilter : Ġ$ search " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }