package service import scala.slick.driver.H2Driver.simple._ import Database.threadLocalSession import model._ trait LabelsService { def getLabels(owner: String, repository: String): List[Label] = Query(Labels) .filter(t => (t.userName is owner.bind) && (t.repositoryName is repository.bind)) .sortBy(_.labelName asc) .list def getLabel(owner: String, repository: String, labelId: Int): Option[Label] = Query(Labels) .filter(t => (t.userName is owner.bind) && (t.repositoryName is repository.bind) && (t.labelId is labelId.bind)) .firstOption def createLabel(owner: String, repository: String, labelName: String, color: String): Unit = Labels.ins insert (owner, repository, labelName, color) def updateLabel(owner: String, repository: String, labelId: Int, labelName: String, color: String): Unit = Query(Labels) .filter { t => (t.userName is owner.bind) && (t.repositoryName is repository.bind) && (t.labelId is labelId.bind)} .map { t => t.labelName ~ t.color } .update (labelName, color) def deleteLabel(owner: String, repository: String, labelId: Int): Unit = { Query(IssueLabels) .filter { t => (t.userName is owner.bind) && (t.repositoryName is repository.bind) && (t.labelId is labelId.bind)} .delete Query(Labels) .filter { t => (t.userName is owner.bind) && (t.repositoryName is repository.bind) && (t.labelId is labelId.bind)} .delete } }