Add AccountService and ProjectService.

This commit is contained in:
takezoe
2013-06-02 14:29:52 +09:00
parent f83d9a63b9
commit 6512b673f6
5 changed files with 63 additions and 9 deletions

View File

@@ -0,0 +1,12 @@
package service
import model._
import scala.slick.driver.H2Driver.simple._
import Database.threadLocalSession
trait AccountService {
def getAccountByUserName(userName: String): Option[Account] =
Query(Accounts) filter(_.userName is userName.bind) firstOption
}

View File

@@ -0,0 +1,37 @@
package service
import model._
import scala.slick.driver.H2Driver.simple._
import Database.threadLocalSession
trait ProjectService { self: AccountService =>
/**
* Creates a new project.
*
* The project is created as public repository at first. Users can modify the project type at the repository settings
* page after the project creation to configure the project as the private repository.
*
* @param projectName the project name
* @param userName the user name of the project owner
* @param description the project description
* @return the created project id
*/
def createProject(projectName: String, userName: String, description: Option[String]): Long = {
// TODO create a git repository also here?
val currentDate = new java.sql.Date(System.currentTimeMillis)
Projects.ins returning Projects.projectId insert
Project(
projectId = None,
projectName = projectName,
userId = getAccountByUserName(userName).get.userId.get,
projectType = 0 /* 0:public, 1:private */,
description = description,
defaultBranch = "master",
registeredDate = currentDate,
updatedDate = currentDate,
lastActivityDate = currentDate)
}
}