package Ġse . g ust av kar l sson . slack dead liner em inder . repo Ċ Ċ import Ġse . g ust av kar l sson . slack dead liner em inder . models . Channel Id Ċ import Ġse . g ust av kar l sson . slack dead liner em inder . models . Deadline Ċ import Ġse . g ust av kar l sson . slack dead liner em inder . models . UserId Ċ import Ġjava . time . LocalDate Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ class ĠIn Memory Deadline Repository Ġ: ĠDead line Repository Ġ{ ĊĠĠĠ Ġprivate Ġval Ġnext Id Ġ= ĠAtomicInteger ( 1 ) ĊĠĠĠ Ġprivate Ġval Ġdata Ġ= Ġmutable ListOf < Deadline >() ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert ( owner Id : ĠUserId , Ġchannel Id : ĠChannel Id , Ġdate : ĠLocalDate , Ġtext : ĠString ): ĠDead line Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġnext Id . get And Increment () ĊĠĠĠĠĠĠĠ Ġval Ġdeadline Ġ= ĠDead line ( id , Ġowner Id , Ġchannel Id , Ġdate , Ġtext ) ĊĠĠĠĠĠĠĠ Ġdata Ġ+= Ġdeadline ĊĠĠĠĠĠĠĠ Ġreturn Ġdeadline ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġlist (): ĠList < Deadline > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġremove ( id : ĠInt ): ĠDead line ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeadline Ġ= Ġdata . find Ġ{ Ġit . id Ġ== Ġid Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( deadline Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . remove ( deadline ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdeadline ĊĠĠĠ Ġ} Ċ } Ċ