app/services/TokenDBService.scala (24 lines of code) (raw):
package services
import org.scanamo.{Scanamo, Table}
import software.amazon.awssdk.services.dynamodb.DynamoDbClient
import org.scanamo._
import org.scanamo.syntax._
import org.scanamo.generic.auto._
import scala.concurrent.ExecutionContext
import scala.util.Either
case class NewCookieIssue(id: String, email: String, requested: Long, used: Boolean)
/**
* Service to manage persistence of user cookies.
*/
class TokenDBService(
client: DynamoDbClient,
tableName: String
)(implicit executionContext: ExecutionContext) {
private val table = Table[NewCookieIssue](tableName)
private def run[T] = Scanamo(client).exec[T] _
def getCookieIssueForUserToken(userToken: String): Option[Either[DynamoReadError, NewCookieIssue]] =
run(table.get("id" === userToken))
def createCookieIssue(cookieIssue: NewCookieIssue): Unit = {
run(table.put(cookieIssue))
}
def expireCookieIssue(cookieIssue: NewCookieIssue): Unit = {
run(table.put(cookieIssue.copy(used = true)))
}
}