我有以下代码片段,我想改进:
final case class GenderOps[F[_]]()
(implicit xa: Transactor[F],
ev: Bracket[F, Throwable]) extends GenderDb[F] {
override def create: F[Int] =
sql"""
CREATE TABLE interests
(
id smallserial NOT NULL,
interest character varying(40) NOT NULL,
PRIMARY KEY (id)
)
""".update.run.transact(xa)
override def seed[L[_] : Foldable](v: L[Gender]): F[Int] = ???
Run Code Online (Sandbox Code Playgroud)
正如您在代码中看到的,case class参数为空。可以避免case class吗?
一个案例类应该只用于数据建模,而不是处理。
这将是一个更好的方法来塑造这个:
sealed trait GenderDb[F[_]] {
def create: F[Int]
def seed[L[_] : Foldable](v: L[Gender]): F[Int]
}
object GenderDb {
def apply[F[_]](implicit xa: Transactor[F], ev: Bracket[F, Throwable]): GenderDb[F] = new GenderDb[F] {
override def create: F[Int] =
sql"""
CREATE TABLE interests
(
id smallserial NOT NULL,
interest character varying(40) NOT NULL,
PRIMARY KEY (id)
)
""".update.run.transact(xa)
override def seed[L[_] : Foldable](v: L[Gender]): F[Int] = ???
}
}
Run Code Online (Sandbox Code Playgroud)