package Ġxyz . qw ex ter . storage Ċ Ċ import Ġcom . squareup . sql de light . runtime . coroutines . as Flow Ċ import Ġcom . squareup . sql de light . runtime . coroutines . map ToList Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġxyz . qw ex ter . tags . Tags Connections Queries Ċ import Ġxyz . qw ex ter . tags . Tags Queries Ċ import Ġxyz . qw ex ter . tags _ api . Tag Ċ import Ġxyz . qw ex ter . tags _ storage . Tag Storage Ċ Ċ class ĠTag Storage Impl ( ĊĠĠĠ Ġprivate Ġval Ġtags Queries : ĠTags Queries , ĊĠĠĠ Ġprivate Ġval Ġtags Connections Queries : ĠTags Connections Queries , Ċ ) Ġ: ĠTag Storage Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġobserve Tags (): ĠFlow < List < Tag >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtags Queries . selectAll Ġ{ Ġid , Ġname Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTag ( id , Ġname ) ĊĠĠĠĠĠĠĠ Ġ}. as Flow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ToList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Queries . insert Tag ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert ( name : ĠString , Ġpl ants Id : ĠList < Long >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Queries . insert Tag ( name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( pl ants Id . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġlatest Id Ġ= Ġtags Queries . last Insert Row Id (). execute As One () ĊĠĠĠĠĠĠĠ Ġpl ants Id . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags Connections Queries . add Connection ( latest Id , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdelete ( id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags Queries . remove Tag ( id ) ĊĠĠĠ Ġ} Ċ }