Last active
December 18, 2015 09:40
-
-
Save tango238/dc86fb467d29342a096c to your computer and use it in GitHub Desktop.
Slick Practice (Dec 18, 2015)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env scalas | |
// @see http://eed3si9n.com/ja/scripting-with-scala | |
// chmod +x script.scala | |
// export CONSCRIPT_OPTS="-XX:MaxPermSize=512M -Dfile.encoding=UTF-8" | |
// ./script.scala | |
/*** | |
scalaVersion := "2.11.7" | |
libraryDependencies ++= Seq( | |
"mysql" % "mysql-connector-java" % "5.1.28", | |
"com.typesafe.slick" %% "slick" % "3.1.1", | |
"org.slf4j" % "slf4j-nop" % "1.6.4" | |
) | |
*/ | |
import slick.driver.MySQLDriver.api._ | |
import scala.concurrent.ExecutionContext.Implicits.global | |
class Suppliers(tag: Tag) extends Table[(Int, String, String, String, String, String)](tag, "SUPPLIERS") { | |
def id = column[Int]("SUP_ID", O.PrimaryKey) | |
def name = column[String]("SUP_NAME") | |
def street = column[String]("STREET") | |
def city = column[String]("CITY") | |
def state = column[String]("STATE") | |
def zip = column[String]("ZIP") | |
def * = (id, name, street, city, state, zip) | |
} | |
val suppliers = TableQuery[Suppliers] | |
class Coffees(tag: Tag) extends Table[(String, Int, Double, Int, Int)](tag, "COFFEES") { | |
def name = column[String]("COF_NAME", O.PrimaryKey) | |
def supID = column[Int]("SUP_ID") | |
def price = column[Double]("PRICE") | |
def sales = column[Int]("SALES") | |
def total = column[Int]("TOTAL") | |
def * = (name, supID, price, sales, total) | |
def supplier = foreignKey("SUP_FK", supID, suppliers)(_.id) | |
} | |
val coffees = TableQuery[Coffees] | |
val db = Database.forURL("jdbc:mysql://localhost/test?user=root&password=", driver="com.mysql.jdbc.Driver") | |
val setup = DBIO.seq( | |
(suppliers.schema ++ coffees.schema).drop, | |
(suppliers.schema ++ coffees.schema).create, | |
suppliers += (101, "Acme, Inc.", "99 Market Street", "Groundsville", "CA", "95199"), | |
suppliers += ( 49, "Superior Coffee", "1 Party Place", "Mendocino", "CA", "95460"), | |
suppliers += (150, "The High Ground", "100 Coffee Lane", "Meadows", "CA", "93966"), | |
coffees ++= Seq( | |
("Colombian", 101, 7.99, 0, 0), | |
("French_Roast", 49, 8.99, 0, 0), | |
("Espresso", 150, 9.99, 0, 0), | |
("Colombian_Decaf", 101, 8.99, 0, 0), | |
("French_Roast_Decaf", 49, 9.99, 0, 0) | |
) | |
) | |
try { | |
val setupFuture = db.run(setup) | |
} finally db.close |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment