slickのcase classをつくるのがめんどかったので、SQLを投げればcase classとTableを生成するスクリプト作りました。
(すでにslick-code-generatorとかある。車輪の再発明。。)
Schema code generation — Slick 2.0.0-RC1 documentation
作った経緯として、なんかslick-code-genが動かなくなって、原因追求の時間がなかったからさくっと作った感じです。
github.com
後悔はしていない。
実際、こんなcreate SQL文を投げると、
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
`create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_name` varchar(25) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1851 DEFAULT CHARSET=utf8;
case class usersDto(
id: Int ,
name: String ,
email: String ,
password: String ,
createDate: DateTime ,
lastName: String
)
class usersTable(tag: Tag) extends Table[usersDto](tag, "users") {
def id: Column[Int] = column[Int]("id")
def name: Column[String] = column[String]("name")
def email: Column[String] = column[String]("email")
def password: Column[String] = column[String]("password")
def createDate: Column[DateTime] = column[DateTime]("create_date")
def lastName: Column[String] = column[String]("last_name")
def * = (id,name,email,password,create_date,last_name)<>(usersDto.tuppled, usersDto.unapply)
}
こんなアウトプットになります。