Skip to content

Commit

Permalink
get group list
Browse files Browse the repository at this point in the history
  • Loading branch information
FScoward committed Jun 24, 2016
1 parent 39999eb commit 1684b94
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 2 deletions.
10 changes: 9 additions & 1 deletion src/main/scala/controllers/GroupController.scala
Expand Up @@ -2,8 +2,9 @@ package controllers

import javax.inject.Inject

import com.twitter.finagle.http.Request
import com.twitter.finatra.http.Controller
import models.{Groups, GroupRequest}
import models.{GroupRequest, Groups}
import repository.GroupRepository
import utils.Id64

Expand All @@ -19,4 +20,11 @@ class GroupController @Inject()(groupRepository: GroupRepository) extends Contro
groupRepository.save(Groups(id, request.name))
}

get("/group") { request: Request =>

val list = groupRepository.list()

list
}

}
11 changes: 10 additions & 1 deletion src/main/scala/repository/GroupRepository.scala
Expand Up @@ -6,6 +6,9 @@ import models.Groups

import scala.concurrent.ExecutionContext.Implicits.global

import com.twitter.util.{Future => TwitterFuture}
import utils.TwitterConverters._

/**
* Created by Fumiyasu on 2016/06/22.
*/
Expand All @@ -14,8 +17,14 @@ class GroupRepository {
lazy val db = source(new MysqlAsyncSourceConfig[Literal]("db"))

def save(groups: Groups) = {

val q = quote(query[Groups].insert)
db.run(q)(List(groups))
}

def list(): TwitterFuture[List[Groups]] = {
val q = quote(query[Groups])
(for {
r <- db.run(q)
} yield r)
}
}
34 changes: 34 additions & 0 deletions src/main/scala/utils/TwitterConverters.scala
@@ -0,0 +1,34 @@
package utils

import com.twitter.{util => twitter}
import scala.concurrent.{ExecutionContext, Promise, Future}
import scala.util.{Failure, Success, Try}
import language.implicitConversions


/**
* http://stackoverflow.com/questions/30317473/convert-scala-future-to-twitter-future
* */
object TwitterConverters {
implicit def scalaToTwitterTry[T](t: Try[T]): twitter.Try[T] = t match {
case Success(r) => twitter.Return(r)
case Failure(ex) => twitter.Throw(ex)
}

implicit def twitterToScalaTry[T](t: twitter.Try[T]): Try[T] = t match {
case twitter.Return(r) => Success(r)
case twitter.Throw(ex) => Failure(ex)
}

implicit def scalaToTwitterFuture[T](f: Future[T])(implicit ec: ExecutionContext): twitter.Future[T] = {
val promise = twitter.Promise[T]()
f.onComplete(promise update _)
promise
}

implicit def twitterToScalaFuture[T](f: twitter.Future[T]): Future[T] = {
val promise = Promise[T]()
f.respond(promise complete _)
promise.future
}
}

0 comments on commit 1684b94

Please sign in to comment.