我正在尝试实现诸如日志表之类的东西。
假设我有...
final class LogTable(tag: Tag) extends Table[LogModel](tag,"log"){
def createdAt = column[Timestamp]("created_at")
//...
}
由于日志在单个表中获取了太多记录,因此我想使用多个结构完全相同但名称不同的表。换句话说,我只想更改 Table[](tag,"this name")
并且如果可能的话,我想让它在从外部调用时像单个表一样运行.
当前我的实现
class LogBase(tag: Tag) extends Table[LogModel](tag,"log"){
def createdAt = column[Timestamp]("created_at")
//...
}
final class LogTable1(tag:Tag) extends LogBase(tag){
override val tableName = "log1"
}
final class LogTable2(tag:Tag) extends LogBase(tag){
override val tableName = "log2"
}
//...
尽管最后一个选择是根据需要编写尽可能多的表,有什么方法可以以智能的方式实现这一点?
任何形式的建议都值得赞赏。
最佳答案
为什么不简单地将表名作为参数传递?
class LogBase(tag: Tag, id: Int) extends Table[LogModel](tag, s"log${id % 100}")
您可以创建一个工厂来抽象此逻辑
关于scala slick通过一个模型处理2个以上相同结构的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538436/