Плавный фильтр даты-времени по времени-времени по значению большего или меньшего - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь отфильтровать nscala-time DateTime с Slick

package models.repositories.tables

import java.sql.Timestamp
import com.github.nscala_time.time.Imports._
import models.entities.User
import slick.lifted.ProvenShape
import slick.jdbc.MySQLProfile.api._

class UserTable (tag: Tag)  extends Table[User](tag, "users") {
  def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
  def name = column[String]("name")
  def createdAt = column[DateTime]("createdAt", O.SqlType("TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"))
  def updatedAt = column[DateTime]("updatedAt", O.SqlType("TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"))
  override def * : ProvenShape[User] = (
    id,
    name,
    createdAt,
    updatedAt
  ) <> (User.tupled, User.unapply)
}

object UserTable extends GenericTableQuery[User, UserTable] {
  val userQuery = tableQuery

  implicit def dateTimeMapping: BaseColumnType[DateTime] = MappedColumnType.base[DateTime, Timestamp](
    dateTime => new Timestamp(dateTime.getMillis),
    timeStamp => new DateTime(timeStamp.getTime)
  )

}

Но когда я пытаюсь отфильтровать с помощью

def getUsers(from: DateTime, end: DateTime, offset: Int) = {
  val usersQuery = UserTable.userQuery.filter(p => p.createdAt >= from && p.createdAt <= end).sortBy(_.createdAt.desc)
  users.drop(offset).take(25)
}

, я получаю символ >=<= не может быть решена

1 Ответ

0 голосов
/ 06 декабря 2018

Все, что мне нужно, это явно импортировать implicit def dateTimeMapping, где мне нужно его использовать

import models.repositories.tables.UserTable.dateTimeMapping
...