package Ġme . y 9 san 9 . pri z eb ot . database . linked _ channels _ storage Ċ Ċ import Ġme . y 9 san 9 . pri z eb ot . database . linked _ channels _ storage . Table Linked Channels Storage . Linked Channels . CHANNEL _ ID Ċ import Ġme . y 9 san 9 . pri z eb ot . database . linked _ channels _ storage . Table Linked Channels Storage . Linked Channels . USER _ ID Ċ import Ġme . y 9 san 9 . extensions . any . unit Ċ import Ġorg . jetbrains . ex posed . sql .* Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction ĊĊ Ċ internal Ġclass ĠTable Linked Channels Storage Ġ( ĊĠĠĠ Ġprivate Ġval Ġdatabase : ĠDatabase Ċ ) Ġ: ĠLinked Channels Storage Ġ{ ĊĠĠĠ Ġprivate Ġobject ĠLinked Channels Ġ: ĠTable ( name Ġ= Ġ" linked _ channels ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠCHAN NEL _ ID Ġ= Ġlong (" channelId ") ĊĠĠĠĠĠĠĠ Ġval ĠUSER _ ID Ġ= Ġlong (" userId ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . create ( Linked Channels ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlink Channel ( userId : ĠLong , Ġchannel Id : ĠLong ) Ġ= Ġtransaction ( database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( Linked Channels . select Ġ{ Ġ( CHANNEL _ ID Ġeq Ġchannel Id ) Ġand Ġ( USER _ ID Ġeq ĠuserId ) Ġ}. first OrNull () Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinked Channels . insert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ USER _ ID ] Ġ= ĠuserId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ CHANNEL _ ID ] Ġ= Ġchannel Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. unit ĊĊĠĠĠ Ġoverride Ġfun Ġunlink Channel ( userId : ĠLong , Ġchannel Id : ĠLong ) Ġ= Ġtransaction ( database ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLinked Channels . delete Where Ġ{ Ġ( USER _ ID Ġeq ĠuserId ) Ġand Ġ( CHANNEL _ ID Ġeq Ġchannel Id ) Ġ} ĊĠĠĠ Ġ}. unit ĊĊĠĠĠ Ġoverride Ġfun Ġget Channels ( userId : ĠLong ): ĠList < Long > Ġ= Ġtransaction ( database ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLinked Channels . select Ġ{ ĠUSER _ ID Ġeq ĠuserId Ġ}. map Ġ{ Ġit [ CHANNEL _ ID ] Ġ} ĊĠĠĠ Ġ} Ċ } Ċ