package Ġbr . com . ac mat tos . hdc . scheduler . config Ċ Ċ import Ġbr . com . ac mat tos . hdc . common . context . domain . c qs . CommandHandler Ċ import Ġbr . com . ac mat tos . hdc . common . context . domain . c qs . Event Store Ċ import Ġbr . com . ac mat tos . hdc . common . context . domain . c qs . Event Store Repository Ċ import Ġbr . com . ac mat tos . hdc . common . context . domain . model . Entity Repository Ċ import Ġbr . com . ac mat tos . hdc . common . context . domain . model . Repository Ċ import Ġbr . com . ac mat tos . hdc . common . context . port . persistence . mongodb . M db Collection Ċ import Ġbr . com . ac mat tos . hdc . common . context . port . persistence . mongodb . M db Collection Config Ċ import Ġbr . com . ac mat tos . hdc . common . context . port . persistence . mongodb . M db Configuration Ċ import Ġbr . com . ac mat tos . hdc . common . context . port . persistence . mongodb . M db Database Ċ import Ġbr . com . ac mat tos . hdc . common . context . port . persistence . mongodb . M db Event Document Ċ import Ġbr . com . ac mat tos . hdc . common . context . port . persistence . mongodb . M db Filter Translator Ċ import Ġbr . com . ac mat tos . hdc . common . context . port . persistence . mongodb . M db Repository Ċ import Ġbr . com . ac mat tos . hdc . common . context . port . rest . Endpoint Definition Ċ import Ġbr . com . ac mat tos . hdc . scheduler . application . Appointment CommandHandler Service Ċ import Ġbr . com . ac mat tos . hdc . scheduler . domain . c qs . Appointment Event Ċ import Ġbr . com . ac mat tos . hdc . scheduler . domain . model . Appointment Ċ import Ġbr . com . ac mat tos . hdc . scheduler . port . persistence . mongodb . Appointment M db Document Ċ import Ġbr . com . ac mat tos . hdc . scheduler . port . rest . Appointment Command Controller Ċ import Ġbr . com . ac mat tos . hdc . scheduler . port . rest . Appointment Controller Endpoint Definition Ċ import Ġcom . mongodb . client . model . Indexes Ċ import Ġorg . k oin . core . component . K oin Component Ċ import Ġorg . k oin . core . qual ifier . named Ċ import Ġorg . k oin . dsl . module Ċ Ċ const Ġval ĠA ED Ġ= Ġ" Appointment Controller Endpoint Definition " Ċ const Ġval ĠA CH Ġ= Ġ" Appointment CommandHandler Service " Ċ const Ġval ĠA EM C Ġ= Ġ" Appointment Event M db Configuration " Ċ const Ġval ĠA EM U Ġ= Ġ" AP POINT MENT _ EVENT _ MONGO _ URL " Ċ const Ġval ĠA EM D Ġ= Ġ" Appointment Event M db Database " Ċ const Ġval ĠA ECC Ġ= Ġ" Appointment Event M db Collection Config " Ċ const Ġval ĠAP EN Ġ= Ġ" appointment _ event " Ċ const Ġval ĠAE MO Ġ= Ġ" Appointment Event M db Collection " Ċ const Ġval ĠA EMR Ġ= Ġ" Appointment Event M db Repository " Ċ const Ġval ĠA PES Ġ= Ġ" Appointment Event Store " Ċ Ċ const Ġval ĠAP MC Ġ= Ġ" Appointment M db Configuration " Ċ const Ġval ĠA PM U Ġ= Ġ" AP POINT MENT _ MONGO _ URL " Ċ const Ġval ĠAP MD Ġ= Ġ" Appointment M db Database " Ċ const Ġval ĠAP CC Ġ= Ġ" Appointment M db Collection Config " Ċ const Ġval ĠAP ET Ġ= Ġ" appointment " Ċ const Ġval ĠAP MO Ġ= Ġ" Appointment M db Collection " Ċ const Ġval ĠA PM R Ġ= Ġ" Appointment M db Repository " Ċ const Ġval ĠA PRE Ġ= Ġ" Appointment Repository " Ċ Ċ /** Ċ Ġ* Ġ@ author ĠAC Mat tos Ċ Ġ* Ġ@ since Ġ 0 3 / 1 1 / 2 0 2 0 . Ċ Ġ*/ Ċ object ĠAppointment K oin Component : ĠK oin Component Ġ{ ĊĠĠĠ Ġfun Ġload Module () Ġ= Ġmodule Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 Ġ- ĠEndpoint ĠDefinition ĊĠĠĠĠĠĠĠ Ġsingle < Endpoint Definition >( named ( A ED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppointment Controller Endpoint Definition ( get ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 Ġ- ĠController ĠEndpoint ĊĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppointment Command Controller ( get ( named ( ACH ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 3 Ġ- ĠCommand ĠHandler ĊĠĠĠĠĠĠĠ Ġsingle < CommandHandler < Appointment Event >>( named ( ACH )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppointment CommandHandler Service ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ( named ( AP ES )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ( named ( AP RE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ( named ( PES )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 4 Ġ- ĠEvent ĠStore Ġ- ĠMongoDB ĠConfiguration ĊĠĠĠĠĠĠĠ Ġsingle ( named ( A EM C )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Configuration ( A EM U ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 5 Ġ- ĠEvent ĠStore Ġ- ĠMongoDB ĠDatabase ĊĠĠĠĠĠĠĠ Ġsingle ( named ( A EM D )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Database ( get ( named ( A EM C ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 6 Ġ- ĠEvent ĠStore Ġ- ĠMongoDB ĠCollection ĠConfig ĊĠĠĠĠĠĠĠ Ġsingle ( named ( AE CC )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Collection Config ( AP EN , ĠM db Event Document :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Indexes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndexes . ascending (" event . appointment _ id . id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 7 Ġ- ĠEvent ĠStore Ġ- ĠMongoDB ĠCollection ĊĠĠĠĠĠĠĠ Ġsingle ( named ( AE MO )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Collection < M db Event Document >( get ( named ( A EM D )), Ġget ( named ( AE CC ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 8 Ġ- ĠEvent ĠStore Ġ- ĠMongoDB ĠRepository ĊĠĠĠĠĠĠĠ Ġsingle ( named ( A EMR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Repository < M db Event Document >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ( named ( AE MO )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM db Filter Translator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 9 Ġ- ĠEvent ĠStore Ġ- ĠEvent ĠStore ĠRepository ĊĠĠĠĠĠĠĠ Ġsingle < Event Store < Appointment Event >>( named ( AP ES )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Store Repository ( get ( named ( A EMR ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 0 Ġ- ĠEntity ĠRepository Ġ- ĠMongoDB ĠConfiguration ĊĠĠĠĠĠĠĠ Ġsingle ( named ( AP MC )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Configuration ( AP MU ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 1 Ġ- ĠEntity ĠRepository Ġ- ĠMongoDB ĠDatabase ĊĠĠĠĠĠĠĠ Ġsingle ( named ( AP MD )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Database ( get ( named ( AP MC ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 2 Ġ- ĠEntity ĠRepository Ġ- ĠMongoDB ĠCollection ĠConfig ĊĠĠĠĠĠĠĠ Ġsingle ( named ( AP CC )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Collection Config ( AP ET , ĠAppointment M db Document :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Indexes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndexes . ascending (" appointment _ id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 3 Ġ- ĠEntity ĠRepository Ġ- ĠMongoDB ĠCollection ĊĠĠĠĠĠĠĠ Ġsingle ( named ( AP MO )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Collection < Appointment M db Document >( get ( named ( AP MD )), Ġget ( named ( AP CC ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 4 Ġ- ĠEntity ĠRepository Ġ- ĠMongoDB ĠRepository ĊĠĠĠĠĠĠĠ Ġsingle ( named ( AP MR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM db Repository < Appointment M db Document >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ( named ( AP MO )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM db Filter Translator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 5 Ġ- ĠEntity ĠRepository Ġ- ĠEntity ĠRepository ĊĠĠĠĠĠĠĠ Ġsingle < Repository < Appointment >>( named ( AP RE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEntity Repository ( get ( named ( AP MR ))) Ġ{ Ġentity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppointment M db Document ( entity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ