package Ġlog d . logging Ċ Ċ import Ġcom . arang odb . Ar ango Database Ċ import Ġcom . arang odb . entity . Base Document Ċ import Ġcom . arang odb . util . Map Builder Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . util .* Ċ import Ġlog d . COLLECTION _ NAME Ċ import Ġlog d . Event Ċ import Ġlog d . web . Jack son Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠLogging ServiceImpl ( val Ġdb : ĠAr ango Database ) Ġ: ĠLogging Service Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĠĠĠ Ġprivate Ġval Ġtz Ġ= ĠTime Zone . getDefault (). to Zone Id () ĊĊĠĠĠ Ġoverride Ġfun Ġput Events ( events : ĠList < Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= Ġdb . collection ( COLLECTION _ NAME ) ĊĠĠĠĠĠĠĠ Ġval Ġdocs Ġ= Ġevents . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠBase Document (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Attribute (" ts ", Ġit . ts . format ( DateTime Formatter . ISO _ OFFSET _ DATE _ TIME )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Attribute (" message ", Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Attribute (" attrs ", Ġit . attrs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . trace (" Document : Ġ{}", Ġdoc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcollection . insert Documents ( docs ) ĊĠĠĠĠĠĠĠ Ġresult . errors . forEach Ġ{ Ġlog . error (" Error : Ġ{}", Ġit . errorMessage ) Ġ} ĊĠĠĠĠĠĠĠ Ġresult . documents . forEach Ġ{ Ġlog . debug (" Created Ġdocument Ġwith Ġkey Ġ'{} '", Ġit . key ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġquery Ġ= Ġ""" ĊĠĠĠĠĠĠĠ ĠFOR Ġx ĠIN Ġ$ COLLECTION _ NAME ĊĠĠĠĠĠĠĠ ĠFILTER ĠDATE _ TIMESTAMP ( x . ts ) Ġ>= ĠDATE _ TIMESTAMP (@ from ) ĊĠĠĠĠĠĠĠĠĠĠ ĠAND ĠDATE _ TIMESTAMP ( x . ts ) Ġ<= ĠDATE _ TIMESTAMP (@ until ) ĊĠĠĠĠĠĠĠ ĠLIMIT Ġ 1 0 0 ĊĠĠĠĠĠĠĠ ĠRETURN Ġx ĊĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġprivate Ġval Ġquery With Text Ġ= Ġ""" ĊĠĠĠĠĠĠĠ ĠFOR Ġx ĠIN Ġ$ COLLECTION _ NAME ĊĠĠĠĠĠĠĠ ĠFILTER ĠDATE _ TIMESTAMP ( x . ts ) Ġ>= ĠDATE _ TIMESTAMP (@ from ) ĊĠĠĠĠĠĠĠĠĠĠ ĠAND ĠDATE _ TIMESTAMP ( x . ts ) Ġ<= ĠDATE _ TIMESTAMP (@ until ) ĊĠĠĠĠĠĠĠĠĠĠ ĠAND Ġx . message ĠLIKE Ġ@ text ĊĠĠĠĠĠĠĠ ĠLIMIT Ġ 1 0 0 ĊĠĠĠĠĠĠĠ ĠRETURN Ġx ĠĊĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġoverride Ġfun Ġsearch Events ( from : ĠString , Ġuntil : ĠString ?, Ġtext : ĠString ?): ĠList < Event > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuntil DT Ġ= Ġuntil Ġ?: ĠZ onedDateTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. now ( tz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( DateTime Formatter . ISO _ OFFSET _ DATE _ TIME ) ĊĠĠĠĠĠĠĠ Ġval Ġbind Vars Ġ= ĠMap Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" from ", Ġfrom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" until ", Ġuntil DT ) ĊĠĠĠĠĠĠĠ Ġvar Ġquery Text Ġ= Ġquery ĊĠĠĠĠĠĠĠ Ġtext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind Vars . put (" text ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Text Ġ= Ġquery With Text ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdb . query ( query Text , Ġbind Vars . get (), ĠString :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . map Ġ{ ĠJack son . mapper . readValue < Event >( it ) Ġ}. toList () ĊĠĠĠ Ġ} Ċ } Ċ