使用PlaySlick和slick-pg将一系列时间戳范围存储到postgresql中

时间:2016-06-23 19:49:33

标签: postgresql scala playframework slick

我正在尝试将时间戳范围列表存储到PostgreSQL表的“可用”列中。我正在使用slick-pg来帮忙。对于我有的表数据:

create table users (
    id text NOT NULL PRIMARY KEY,
    action text NOT NULL,
    scheduled timestamptz,
    available tstzrange[]
);

在我的DAO中,我有:

private class UsersTable(tag: Tag) extends Table[User](tag, "users") {

    def id = column[String]("id", O.PrimaryKey)
    def action = column[String]("action")
    def timestamp = column[Option[Timestamp]]("scheduled")
    def available = column[Option[List[com.github.tminglei.slickpg.Range[Timestamp]]]]("available")

    def * = (id, action, timestamp, available) <> (User.tupled, User.unapply _)
}

该表的相关案例类:

case class User(id: String, action: String, timestamp: Option[Timestamp] = None, available:Option[List[com.github.tminglei.slickpg.Range[Timestamp]]] = None)

我知道我错过了一个隐含的东西,类似于example file中的含义。但是我仍然是Scala的新手,并坚持如何定义它。

1 个答案:

答案 0 :(得分:0)

在课堂上你正在进行一些DAO访问,像这样注入<resources>

DatabaseConfigProvider

并将其设为class Class @Inject() (protected val dbConfigProvider: DatabaseConfigProvider)

你必须导入:(数据库是包的名称,其中是MyPostgresDriver文件)

extends HasDatabaseConfigProvider[MyPostgresDriver]

这是MyPostgresDriver文件:

import database.MyPostgresDriver.api._
import database.MyPostgresDriver
import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider}

(仅选择所需的含义)。