Refactor database schema.

This commit is contained in:
takezoe
2013-06-03 19:04:57 +09:00
parent d3ad0efdcd
commit 2413fca648
9 changed files with 173 additions and 89 deletions

View File

@@ -3,8 +3,7 @@ package model
import scala.slick.driver.H2Driver.simple._
object Accounts extends Table[Account]("ACCOUNT") {
def userId = column[Long]("USER_ID", O AutoInc)
def userName = column[String]("USER_NAME")
def userName = column[String]("USER_NAME", O PrimaryKey)
def mailAddress = column[String]("MAIL_ADDRESS")
def password = column[String]("PASSWORD")
def userType = column[Int]("USER_TYPE")
@@ -12,12 +11,11 @@ object Accounts extends Table[Account]("ACCOUNT") {
def registeredDate = column[java.sql.Date]("REGISTERED_DATE") // TODO convert java.util.Date later
def updatedDate = column[java.sql.Date]("UPDATED_DATE")
def lastLoginDate = column[java.sql.Date]("LAST_LOGIN_DATE")
def * = userId.? ~ userName ~ mailAddress ~ password ~ userType ~ url.? ~ registeredDate ~ updatedDate ~ lastLoginDate.? <> (Account, Account.unapply _)
def ins = userName ~ mailAddress ~ password ~ userType ~ url.? ~ registeredDate ~ updatedDate ~ lastLoginDate.? <> ({ t => Account(None, t._1, t._2, t._3, t._4, t._5, t._6, t._7, t._8)}, { (o: Account) => Some((o.userName, o.mailAddress, o.password, o.userType, o.url, o.registeredDate, o.updatedDate, o.lastLoginDate))})
def * = userName ~ mailAddress ~ password ~ userType ~ url.? ~ registeredDate ~ updatedDate ~ lastLoginDate.? <> (Account, Account.unapply _)
// def ins = userName ~ mailAddress ~ password ~ userType ~ url.? ~ registeredDate ~ updatedDate ~ lastLoginDate.? <> ({ t => Account(None, t._1, t._2, t._3, t._4, t._5, t._6, t._7, t._8)}, { (o: Account) => Some((o.userName, o.mailAddress, o.password, o.userType, o.url, o.registeredDate, o.updatedDate, o.lastLoginDate))})
}
case class Account(
userId: Option[Long],
userName: String,
mailAddress: String,
password: String,
@@ -32,8 +30,8 @@ class AccountDao {
import Database.threadLocalSession
// def insert(o: Account): Account = Accounts.ins returning Accounts.* insert o
def insert(o: Account): Long = Accounts.ins returning Accounts.userId insert o
def insert(o: Account): Long = Accounts.* insert o
def select(key: Long): Option[Account] = Query(Accounts) filter(_.userId is key.bind) firstOption
def select(key: String): Option[Account] = Query(Accounts) filter(_.userName is key.bind) firstOption
}