package Ġcom . hyper aware . bfa . cloud run . routes Ċ Ċ import Ġcom . google . firebase . cloud . Fire store Client Ċ import Ġcom . hyper aware . bfa . cloud run . util . await Ċ import Ġio . ktor . application . application Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing . Routing Ċ import Ġio . ktor . routing . get Ċ Ċ // ĠExample Ġof Ġusing Ġthe ĠFirebase ĠAdmin ĠSDK Ġto Ġget Ġa Ġdocument Ġfrom ĠFire store Ċ // Ġand Ġreturn Ġit Ġto Ġthe Ġclient . Ċ Ċ fun ĠRouting . getDocument () Ġ{ ĊĠĠĠ Ġget ("/ get /{ id }") Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . environment . log . info ("/ get ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcall . parameters [" id "] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest , Ġ" Missing Ġid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ get ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsnapshot Ġ= ĠFire store Client . get Fire store () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection (" kotlin ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get (). await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( snapshot . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe ĠMap Ġin Ġsnapshot . data Ġwill Ġbe Ġautomatically Ġserialized ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġas ĠJSON Ġin Ġthe Ġresponse Ġusing Ġthe Ġgson ĠContent Neg otiation . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( snapshot . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . NotFound , Ġ" Document Ġ$ id Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . environment . log . error (" o ops ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . InternalServerError ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ