Newer
Older
gitbucket_jkp / src / main / scala / service / ActivityService.scala
package service

import model._
import Activities._
import scala.slick.driver.H2Driver.simple._
import Database.threadLocalSession

trait ActivityService {

  def getActivitiesByUser(activityUserName: String, isPublic: Boolean): List[Activity] = {
    val q = Query(Activities)
      .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName))

    (if(isPublic){
      q filter { case (t1, t2) => (t1.activityUserName is activityUserName.bind) && (t2.isPrivate is false.bind) }
    } else {
      q filter { case (t1, t2) => t1.activityUserName is activityUserName.bind }
    })
    .sortBy { case (t1, t2) => t1.activityId desc }
    .map    { case (t1, t2) => t1 }
    .list
  }

  def recordCreateRepository(userName: String, repositoryName: String, activityUserName: String): Unit =
    Activities.autoInc insert(userName, repositoryName, activityUserName,
      "[[%s]] created [[%s/%s]]".format(activityUserName, userName, repositoryName),
      currentDate)

  def recordCreateIssue(userName: String, repositoryName: String, activityUserName: String, issueId: Int): Unit =
    Activities.autoInc insert(userName, repositoryName, activityUserName,
      "[[%s]] opened issue [[%s/%s#%d]]".format(activityUserName, userName, repositoryName, issueId),
      currentDate)
}