1 package com.bayakala.funda.rowtypes 2 import slick.dbio._ 3 object ActionType { 4 type FDAAction[T] = DBIO[T] 5 }
1 import slick.dbio.DBIO 2 import slick.driver.H2Driver.api._ 3
4 import scala.concurrent.duration._ 5 import scala.concurrent.{Await, Future} 6 import scala.util.{Failure, Success} 7 import scala.concurrent.ExecutionContext.Implicits.global
8 import slick.jdbc.meta.MTable 9 object ActionRowTest extends App { 10
11 class ATable(tag: Tag) extends Table[(Int,String,Int)](tag,"TA") { 12 def id = column[Int]("id",O.PrimaryKey) 13 def flds = column[String]("aflds") 14 def status = column[Int]("status") 15 def * = (id,flds,status) 16 } 17 val tableA = TableQuery[ATable] 18
19 class BTable(tag: Tag) extends Table[(Int,String,Int)](tag,"TB") { 20 def id = column[Int]("id",O.PrimaryKey) 21 def flds = column[String]("bflds") 22 def status = column[Int]("status") 23 def * = (id,flds,status) 24 } 25 val tableB = TableQuery[BTable] 26
27 val insertAAction =
28 tableA ++= Seq ( 29 (1,"aaa",0), 30 (2,"bbb",3), 31 (3,"ccc",1), 32 (4,"ddd",0), 33 (16,"kkk",16) 34 ) 35 val insertBAction =
36 tableB ++= Seq ( 37 (1,"aaa",1), 38 (2,"bbb",2), 39 (3,"ccc",3), 40 (4,"ddd",4), 41 (5,"kkk",5) 42 ) 43
44 val db = Database.forConfig("h2db") 45
46
47 def tableExists(tables: Vector[MTable], tblname: String) =
48 tables.exists {t =>t.name.toString.contains(tblname)} 49
50 def createSchemaIfNotExists(): Future[Unit] = { 51 db.run(MTable.getTables).flatMap { 52 case tables if !tableExists(tables,".TA") && !tableExists(tables,".TB") =>
53 println("Creating schemas for TA and TB...") 54 db.run((tableA.schema ++ tableB.schema).create) 55 case tables if !tableExists(tables,".TA") =>
56 println("Creating schema for TA ...") 57 db.run(tableA.schema.create) 58 case tables if !tableExists(tables,".TB") =>
59 println("Creating schema for TB ...") 60 db.run(tableB.schema.create) 61 case _ =>
62 println("Schema for TA, TB already created.") 63 Future.successful() 64 } 65 } 66
67 def insertInitialData(): Future[Unit] = { 68 val cleanInsert = DBIO.seq( 69 tableA.d