All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.iheart.thomas.abtest.QueryDSL.scala Maven / Gradle / Ivy

There is a newer version: 0.46-RC4
Show newest version
package com.iheart.thomas
package abtest

import java.time.OffsetDateTime

import model._
import lihua.{Entity, EntityDAO}
import play.api.libs.json.{JsObject, Json, Writes}

object QueryDSL {

  object abtests {
    def byTime(time: OffsetDateTime): JsObject =
      Json.obj(
        "start" → Json.obj("$lte" → time)
      ) ++ endTimeAfter(time)

    def endTimeAfter(time: OffsetDateTime): JsObject =
      Json.obj(
        "$or" -> Json.arr(
          Json.obj("end" → Json.obj("$gt" → time)),
          Json.obj("end" → Json.obj("$exists" → false))
        )
      )
  }


  implicit class ExtendedOps[F[_]](self: EntityDAO[F, Feature, JsObject]) {
    def byName(name: FeatureName): F[Entity[Feature]] = self.findOne('name -> name)
  }


  implicit def fromField1[A : Writes](tp: (Symbol, A)): JsObject =
    Json.obj(tp._1.name -> Json.toJson(tp._2))

  implicit def fromFields2[A : Writes, B: Writes](p: ((Symbol, A), (Symbol, B))): JsObject = p match {
    case ((s1, a), (s2, b)) => Json.obj(s1.name -> a, s2.name -> b)
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy