Models and schemas for users and auth tokens
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package schemas
|
||||
|
||||
import slick.jdbc.PostgresProfile.api._
|
||||
import models._
|
||||
import slick.lifted.ProvenShape
|
||||
import slick.model.ForeignKeyAction.Cascade
|
||||
|
||||
import java.time.Instant
|
||||
|
||||
class UsersTable(tag: Tag) extends Table[User](tag, "users") {
|
||||
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
|
||||
def gid = column[String]("gid", O.Unique)
|
||||
def username = column[String]("username", O.Unique)
|
||||
def passwordDigest = column[Option[String]]("password_digest")
|
||||
|
||||
override def * : ProvenShape[User] = (id.?, username, gid, passwordDigest).mapTo[User]
|
||||
}
|
||||
|
||||
lazy val Users = TableQuery[UsersTable]
|
||||
|
||||
class AuthTokensTable(tag: Tag) extends Table[AuthToken](tag, "auth_tokens") {
|
||||
|
||||
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
|
||||
def userId = column[Int]("user_id")
|
||||
def token = column[String]("token")
|
||||
def createdAt = column[Instant]("created_at")
|
||||
def expiresAt = column[Instant]("expires_at")
|
||||
|
||||
override def * : ProvenShape[AuthToken] = (id.?, userId, token, createdAt, expiresAt).mapTo[AuthToken]
|
||||
|
||||
def user = foreignKey("users", userId, Users)(_.id, onDelete = Cascade)
|
||||
}
|
||||
|
||||
lazy val AuthTokens = TableQuery[AuthTokensTable]
|
||||
Reference in New Issue
Block a user