Newer
Older
gitbucket_jkp / src / main / scala / service / CommitsService.scala
@Shintaro Murakami Shintaro Murakami on 26 Nov 2014 1 KB (refs #9) Comments for commit and diff
package service

import scala.slick.jdbc.{StaticQuery => Q}
import Q.interpolation

import model.Profile._
import profile.simple._
import model.CommitComment
import util.Implicits._
import util.StringUtil._


trait CommitsService {

  def getCommitComments(owner: String, repository: String, commitId: String)(implicit s: Session) =
    CommitComments filter (_.byCommit(owner, repository, commitId)) list

  def getCommitComment(owner: String, repository: String, commentId: String)(implicit s: Session) =
    if (commentId forall (_.isDigit))
      CommitComments filter { t =>
        t.byPrimaryKey(commentId.toInt) && t.byRepository(owner, repository)
      } firstOption
    else
      None

  def createCommitComment(owner: String, repository: String, commitId: String, loginUser: String,
    content: String, fileName: Option[String], oldLine: Option[Int], newLine: Option[Int])(implicit s: Session): Int =
    CommitComments.autoInc insert CommitComment(
      userName          = owner,
      repositoryName    = repository,
      commitId          = commitId,
      commentedUserName = loginUser,
      content           = content,
      fileName          = fileName,
      oldLine           = oldLine,
      newLine           = newLine,
      registeredDate    = currentDate,
      updatedDate       = currentDate)

  def updateCommitComment(commentId: Int, content: String)(implicit s: Session) =
    CommitComments
      .filter (_.byPrimaryKey(commentId))
      .map { t =>
      t.content -> t.updatedDate
    }.update (content, currentDate)

  def deleteCommitComment(commentId: Int)(implicit s: Session) =
    CommitComments filter (_.byPrimaryKey(commentId)) delete
}