123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package models
- import play.api.libs.json._
- import scala.concurrent.Future
- import javax.inject.{Singleton, Inject}
- import play.api.db.slick.DatabaseConfigProvider
- import play.api.db.slick.HasDatabaseConfigProvider
- import slick.jdbc.JdbcProfile
- import scala.concurrent.ExecutionContext
- @Singleton()
- class WorldDAO @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) (implicit ec: ExecutionContext)
- extends HasDatabaseConfigProvider[JdbcProfile] {
- import profile.api._
- private val Worlds = TableQuery[WorldsTable]
- def all(): Future[Seq[World]] = db.run(Worlds.result)
- def insert(world: World): Future[Unit] = db.run(Worlds += world).map { _ => () }
- private class WorldsTable(tag: Tag) extends Table[World](tag, Some("hello_world"), "World") {
- def id = column[Int]("id", O.PrimaryKey)
- def randomNumber = column[Long]("randomNumber")
- def * = (id, randomNumber) <> (World.tupled, World.unapply)
- }
- def findById(id: Int): Future[World] = {
- db.run(Worlds.filter(_.id === id).result.head)
- }
- def updateRandom(world: World) = {
- db.run(Worlds.filter(_.id === world.id).map(_.randomNumber).update(world.randomNumber))
- }
- }
- case class World(id: Int, randomNumber: Long)
- object WorldJsonHelpers {
- implicit val toJson = new Writes[World] {
- def writes(w: World): JsValue = {
- Json.obj(
- "id" -> w.id,
- "randomNumber" -> w.randomNumber
- )
- }
- }
- }
|