Skip to content

Commit

Permalink
renames and a bit of code cleaning
Browse files Browse the repository at this point in the history
  • Loading branch information
fernandezpablo85 committed Apr 7, 2013
1 parent 76095cc commit 3bbb361
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 29 deletions.
29 changes: 0 additions & 29 deletions src/main/scala/DefaultExample.scala

This file was deleted.

14 changes: 14 additions & 0 deletions src/main/scala/Main.scala
@@ -0,0 +1,14 @@
package org.example

import util._

object Main extends App {

benchmark() {
UserDao.insert("pablo", "fernandez")
UserDao.insert("noob", "saibot")
UserDao.insert("uma", "thurman")

val users = UserDao.findByLastName("fernandez")
}
}
36 changes: 36 additions & 0 deletions src/main/scala/UserDao.scala
@@ -0,0 +1,36 @@
package org.example

import scala.slick.driver.PostgresDriver.simple._
import Database.threadLocalSession

object UserDao {

val database = Database.forURL("jdbc:postgresql://localhost:5432/demo", driver = "org.postgresql.Driver")

case class User(id: Option[Int], name: String, last: String)

object Users extends Table[User]("users") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def name = column[String]("name")
def lastName = column[String]("last_name")

def * = (id.? ~ name ~ lastName) <> (User, User.unapply _)

// Shim needed to handle Postgress - Slick quirks with autoincrement columns.
def insertProjection = (name ~ lastName) <> (
{(first, last) => User(None, first, last)},
{(user: User) => Some(user.name, user.last)}
)
}

def insert(name: String, lastName: String) = {
database withSession {
Users.insertProjection.insert(User(None, name, lastName))
}
}

def findByLastName(last: String) = database withSession {
val query = for (u <- Users if u.lastName is last) yield (u)
query.list
}
}

0 comments on commit 3bbb361

Please sign in to comment.