Skip to content

Instantly share code, notes, and snippets.

@tuxdna
Created October 28, 2014 12:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tuxdna/26e1638c8ba041c5d939 to your computer and use it in GitHub Desktop.
Save tuxdna/26e1638c8ba041c5d939 to your computer and use it in GitHub Desktop.
This is a Slick ORM sample for table defintion with more than 22 columns
import play.api.db.slick.Config.driver.simple._
import scala.slick.lifted.Tag
import java.sql.Timestamp
import scala.slick.collection.heterogenous._
/*
* This is a sample for table schema with more than 22 columns
*/
class BigTable(
val c01: Int, val c02: Int, val c03: Int, val c04: Int,
val c05: Int, val c06: Int, val c07: Int, val c08: Int,
val c09: Int, val c10: Int, val c11: Int, val c12: Int,
val c13: Int, val c14: Int, val c15: Int, val c16: Int,
val c17: Int, val c18: Int, val c19: Int, val c20: Int,
val c21: Int, val c22: Int, val c23: Int, val c24: Int,
val c25: Int, val c26: Int, val c27: Int, val c28: Int,
val c29: Int, val c30: Int) {
def this() = this(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
def this(c01: Int, c02: Int) = this(
c01, c02, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
}
object BigTable {
def apply(c01: Int, c02: Int) = new BigTable(c01, c02)
def apply(
c01: Int, c02: Int, c03: Int, c04: Int, c05: Int, c06: Int, c07: Int, c08: Int,
c09: Int, c10: Int, c11: Int, c12: Int, c13: Int, c14: Int, c15: Int, c16: Int,
c17: Int, c18: Int, c19: Int, c20: Int, c21: Int, c22: Int, c23: Int, c24: Int,
c25: Int, c26: Int, c27: Int, c28: Int, c29: Int, c30: Int) = new BigTable(
c01, c02, c03, c04, c05, c06, c07, c08,
c09, c10, c11, c12, c13, c14, c15, c16,
c17, c18, c19, c20, c21, c22, c23, c24,
c25, c26, c27, c28, c29, c30)
def unapply(x: BigTable) = {
Option((
x.c01 :: x.c02 :: x.c03 :: x.c04 :: x.c05 ::
x.c06 :: x.c07 :: x.c08 :: x.c09 :: x.c10 ::
x.c11 :: x.c12 :: x.c13 :: x.c14 :: x.c15 ::
x.c16 :: x.c17 :: x.c18 :: x.c19 :: x.c20 ::
x.c21 :: x.c22 :: x.c23 :: x.c24 :: x.c25 ::
x.c26 :: x.c27 :: x.c28 :: x.c29 :: x.c30 :: HNil))
}
}
class BigTables(tag: Tag) extends Table[BigTable](tag, "big_tables") {
def c01 = column[Int]("c01")
def c02 = column[Int]("c02")
def c03 = column[Int]("c03")
def c04 = column[Int]("c04")
def c05 = column[Int]("c05")
def c06 = column[Int]("c06")
def c07 = column[Int]("c07")
def c08 = column[Int]("c08")
def c09 = column[Int]("c09")
def c10 = column[Int]("c10")
def c11 = column[Int]("c11")
def c12 = column[Int]("c12")
def c13 = column[Int]("c13")
def c14 = column[Int]("c14")
def c15 = column[Int]("c15")
def c16 = column[Int]("c16")
def c17 = column[Int]("c17")
def c18 = column[Int]("c18")
def c19 = column[Int]("c19")
def c20 = column[Int]("c20")
def c21 = column[Int]("c21")
def c22 = column[Int]("c22")
def c23 = column[Int]("c23")
def c24 = column[Int]("c24")
def c25 = column[Int]("c25")
def c26 = column[Int]("c26")
def c27 = column[Int]("c27")
def c28 = column[Int]("c28")
def c29 = column[Int]("c29")
def c30 = column[Int]("c30")
def * = (
c01 :: c02 :: c03 :: c04 :: c05 ::
c06 :: c07 :: c08 :: c09 :: c10 ::
c11 :: c12 :: c13 :: c14 :: c15 ::
c16 :: c17 :: c18 :: c19 :: c20 ::
c21 :: c22 :: c23 :: c24 :: c25 ::
c26 :: c27 :: c28 :: c29 :: c30 :: HNil).shaped <> (
{
// case x => new BigTable(x(0), x(1))
case x => new BigTable(
x(0), x(1), x(2), x(3), x(4), x(5), x(6), x(7), x(8), x(9), x(10),
x(11), x(12), x(13), x(14), x(15), x(16), x(17), x(18), x(19), x(20),
x(21), x(22), x(23), x(24), x(25), x(26), x(27), x(28), x(29))
},
BigTable.unapply _)
}
object BigTables {
val bigTables = TableQuery[BigTables]
def insert(e: BigTable)(implicit session: Session) = {
bigTables.insert(e)
}
def get(id: Int)(implicit session: Session) = {
bigTables.where(_.c01 === id)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment