Slick是否支持每个查询动态更改架构?

loy*_*low 8 postgresql scala slick

我想使用postgresql来支持多租户环境,因此每个客户都有自己的架构.

当我进行SQL查询时,我可以在使用Slick时动态更改架构吗?

如果是这样,怎么样?

cvo*_*ogt 5

您可以参数化Table类和TableQuery工厂.

trait Schema{
  def name: String
}
case object Customer1 extends Schema{
  def name = "CUSTOMER_1"
}
case object Customer2 extends Schema{
  def name = "CUSTOMER_2"
}
class MyTable(tag: Tag, schema: Option[String]) extends Table[...](tag, schema){
  ...
}

def myTable(schema: Schema) = new TableQuery( new MyTable(_,Some(schema.name)) )

myTable(Customer1).filter(_.id == 5).run
Run Code Online (Sandbox Code Playgroud)

  • 像这样?`def myTable(schema:String)= new TableQuery(new MyTable(_,Some(schema))); myTable("CUSTOMER_1").filter(_.id == 5).run` (2认同)