Giter Club home page Giter Club logo

Comments (5)

BowlingX avatar BowlingX commented on July 29, 2024

This will bring back Calendar Field support (Lift's DateTimeField)

object RogueAdditions {
    import com.foursquare.rogue.LiftRogue._
    import com.foursquare.field.{Field => RField}

    class CalendarQueryField[M](field: RField[Calendar, M]) extends AbstractQueryField[Calendar, DateTime, Date, M](field) {
      override def valueToDB(d: DateTime) = d.toDate

      def before(d: DateTime) = new LtQueryClause(field.name, d.toDate)
      def after(d: DateTime) = new GtQueryClause(field.name, d.toDate)
      def onOrBefore(d: DateTime) = new LtEqQueryClause(field.name, d.toDate)
      def onOrAfter(d: DateTime) = new GtEqQueryClause(field.name, d.toDate)
    }

    class CalendarModifyField[M](field: RField[Calendar, M])
      extends AbstractModifyField[Calendar, java.util.Date, M](field) {
      override def valueToDB(c: Calendar) = c.getTime

      def setTo(d: DateTime) = new ModifyClause(ModOps.Set, field.name -> d.toDate)
    }

    implicit def calendarFieldToDateQueryField[M <: BsonRecord[M]]  (f: Field[Calendar, M]): CalendarQueryField[M] = new CalendarQueryField(f)

    implicit def calendarFieldToCalendarModifyField[M <: BsonRecord[M]](f: Field[Calendar, M]): CalendarModifyField[M] =
      new CalendarModifyField(f)

    implicit def rcalendarFieldToCalendarQueryField[M](f: RField[Calendar, M]): CalendarQueryField[M] = new CalendarQueryField(f)

    implicit def rcalendarFieldToCalendarModifyField[M](f: RField[Calendar, M]): CalendarModifyField[M] =      new CalendarModifyField(f)
  }

from rogue.

agilesteel avatar agilesteel commented on July 29, 2024

I took the liberty of fixing the compilation errors, due to missing imports.

object RogueAdditions {
  import java.util.Calendar
  import com.foursquare.rogue._
  import com.foursquare.rogue.LiftRogue._
  import net.liftweb.mongodb.record.BsonRecord
  import com.foursquare.field.{Field => RField}
  import org.joda.time.DateTime

  class CalendarQueryField[M](field: RField[Calendar, M]) 
    extends AbstractQueryField[Calendar, DateTime, java.util.Date, M](field) {
    override def valueToDB(d: DateTime) = d.toDate

    def before(d: DateTime) = new LtQueryClause(field.name, d.toDate)
    def after(d: DateTime) = new GtQueryClause(field.name, d.toDate)
    def onOrBefore(d: DateTime) = new LtEqQueryClause(field.name, d.toDate)
    def onOrAfter(d: DateTime) = new GtEqQueryClause(field.name, d.toDate)
  }

  class CalendarModifyField[M](field: RField[Calendar, M])
    extends AbstractModifyField[Calendar, java.util.Date, M](field) {
    override def valueToDB(c: Calendar) = c.getTime

    def setTo(d: DateTime) = new ModifyClause(ModOps.Set, field.name -> d.toDate)
  }

  implicit def calendarFieldToDateQueryField[M <: BsonRecord[M]]
    (f: net.liftweb.record.Field[Calendar, M]): CalendarQueryField[M] = 
        new CalendarQueryField(f)

  implicit def calendarFieldToCalendarModifyField[M <: BsonRecord[M]]
    (f: net.liftweb.record.Field[Calendar, M]): CalendarModifyField[M] = 
        new CalendarModifyField(f)

  implicit def rcalendarFieldToCalendarQueryField[M]
    (f: RField[Calendar, M]): CalendarQueryField[M] = new CalendarQueryField(f)

  implicit def rcalendarFieldToCalendarModifyField[M]
    (f: RField[Calendar, M]): CalendarModifyField[M] = new CalendarModifyField(f)
}

from rogue.

alebon avatar alebon commented on July 29, 2024

Hey guys, i'm not able to compile the following sample:

SampleRecord where (_.created between (d1, d2))

"created" is a lift DateTimeField and "d1" and "d2" are of type DateTime - between expects Caledar values as input. I tried it on 2.0.0-RC1 2.0.0-beta22 (which one is newer?).

Anyway, how can i apply the changes agilesteel posted?

Thanks a lot!

from rogue.

agilesteel avatar agilesteel commented on July 29, 2024

Hi I'm using 2.0.0-RC1 and had the same issue. You just take the code and import RogueAdditions._ where needed (in addition to standard rogue imports). Just to be clear, the code is not in rogue itself you need to copy paste it ;)

from rogue.

alebon avatar alebon commented on July 29, 2024

THANKS! :)

from rogue.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.