/* Ċ Ġ* ĠThis ĠSource ĠCode ĠForm Ġis Ġsubject Ġto Ġthe Ġterms Ġof Ġthe ĠMozilla ĠPublic Ċ Ġ* ĠLicense , Ġv . Ġ 2 . 0 . ĠIf Ġa Ġcopy Ġof Ġthe ĠM PL Ġwas Ġnot Ġdistributed Ġwith Ġthis Ċ Ġ* Ġfile , ĠYou Ġcan Ġobtain Ġone Ġat Ġhttps :// mozilla . org / MPL / 2 . 0 /. Ċ Ġ*/ Ċ Ċ package Ġorg . qu ilt mc . community . co zy . modules . tags . data Ċ Ċ import Ġdev . k ord . common . entity . Snow flake Ċ Ċ /** Ċ Ġ* ĠInterface Ġrepresenting Ġdata Ġstorage Ġfor Ġthe Ġtags Ġextension . ĠExtend Ġthis Ġand Ġimplement Ġthe Ġfunctions Ġto Ġcreate Ġyour Ċ Ġ* Ġown Ġstorage Ġsetup Ġfor Ġyour Ġbot . Ċ Ġ* Ċ Ġ* ĠFor Ġall Ġfunctions Ġthat Ġtake Ġa Ġguild ĠID Ġ( except Ġfor Ġthe Ġ` delete ` Ġand Ġ` set ` Ġfunctions ), Ġyou Ġshould Ġalso Ġalways Ġmatch Ċ Ġ* Ġtags Ġwith Ġa Ġguild ĠID Ġof Ġ` null `. ĠThese Ġare Ġglobal Ġtags , Ġand Ġshould Ġbe Ġaccessible Ġregardless Ġof Ġthe Ġguild Ġcontext . Ċ Ġ* Ċ Ġ* ĠAll Ġfunctions Ġare Ġsus pending Ġto Ġallow Ġfor Ġdatabase Ġaccess , Ġfor Ġexample , Ġwhere Ġneeded . Ċ Ġ*/ Ċ public Ġinterface ĠTags Data Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġtag Ġby Ġtag Ġkey Ġand Ġguild ĠID . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġget Tag ByKey ( key : ĠString , Ġguild Id : ĠSnow flake ? Ġ= Ġnull ): ĠTag ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġlist Ġof Ġtags Ġwith Ġthe Ġgiven Ġcategory Ġand Ġguild ĠID . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġget Tags By Category ( category : ĠString , Ġguild Id : ĠSnow flake ? Ġ= Ġnull ): ĠList < Tag > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġlist Ġof Ġtags Ġwith Ġthe Ġgiven Ġpartial Ġkey Ġand Ġguild ĠID . ĠShould Ġfind Ġtags Ġwith Ġkeys Ġthat Ġpartially Ġmatch ĊĠĠĠĠ Ġ* Ġthe Ġgiven Ġ[ partial Key ], Ġbut Ġit 's Ġup Ġto Ġyou Ġwhether Ġto Ġuse Ġ` contains ` Ġor Ġ` startsWith `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġget Tags By Partial Key ( partial Key : ĠString , Ġguild Id : ĠSnow flake ? Ġ= Ġnull ): ĠList < Tag > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġlist Ġof Ġtags Ġwith Ġthe Ġgiven Ġpartial Ġtitle Ġand Ġguild ĠID . ĠShould Ġfind Ġtags Ġwith Ġtitles Ġthat Ġpartially Ġmatch ĊĠĠĠĠ Ġ* Ġthe Ġgiven Ġ[ partial Title ], Ġbut Ġit 's Ġup Ġto Ġyou Ġwhether Ġto Ġuse Ġ` contains ` Ġor Ġ` startsWith `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġget Tags By Partial Title ( partial Title : ĠString , Ġguild Id : ĠSnow flake ? Ġ= Ġnull ): ĠList < Tag > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġset Ġof Ġall Ġpotential Ġtag Ġcategories . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun ĠgetAll Categories ( guild Id : ĠSnow flake ? Ġ= Ġnull ): ĠSet < String > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFind Ġtags Ġusing Ġoptionally - provided Ġcriteria . ĠIgnore Ġnull Ġvalues , Ġso Ġtheir Ġcriteria Ġis Ġalways Ġmatched . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġfind Tags ( category : ĠString ? Ġ= Ġnull , Ġguild Id : ĠSnow flake ? Ġ= Ġnull , Ġkey : ĠString ? Ġ= Ġnull ): ĠList < Tag > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGiven Ġa Ġ[ Tag ] Ġobject , Ġstore Ġit Ġ( and Ġpersist Ġit Ġif Ġneeded ), Ġover writing Ġany Ġtags Ġwith Ġthe Ġsame Ġkey Ġand Ġguild ĠID . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġset Tag ( tag : ĠTag ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConvenience Ġfunction Ġwrapping Ġ[ delete Tag ByKey ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġdelete Tag ( tag : ĠTag ): ĠTag ? Ġ= Ġdelete Tag ByKey ( tag . key , Ġtag . guild Id ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġa Ġtag Ġby Ġtag Ġkey Ġand Ġguild ĠID , Ġif Ġit Ġexists . ĠReturn Ġ` null ` Ġif Ġthe Ġtag Ġdidn 't Ġexist , Ġotherwise Ġreturn ĊĠĠĠĠ Ġ* Ġthe Ġremoved Ġtag . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġdelete Tag ByKey ( key : ĠString , Ġguild Id : ĠSnow flake ? Ġ= Ġnull ): ĠTag ? Ċ } Ċ