mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-23 19:08:26 +00:00
Prepare custom fields
This commit is contained in:
@ -94,6 +94,9 @@ trait DoobieMeta extends EmilDoobieMeta {
|
||||
|
||||
implicit val metaGlob: Meta[Glob] =
|
||||
Meta[String].timap(Glob.apply)(_.asString)
|
||||
|
||||
implicit val metaCustomFieldType: Meta[CustomFieldType] =
|
||||
Meta[String].timap(CustomFieldType.unsafe)(_.name)
|
||||
}
|
||||
|
||||
object DoobieMeta extends DoobieMeta {
|
||||
|
@ -0,0 +1,44 @@
|
||||
package docspell.store.records
|
||||
|
||||
import docspell.common._
|
||||
import docspell.store.impl.Column
|
||||
import docspell.store.impl.Implicits._
|
||||
|
||||
import doobie._
|
||||
import doobie.implicits._
|
||||
|
||||
case class RCustomField(
|
||||
id: Ident,
|
||||
name: String,
|
||||
cid: Ident,
|
||||
ftype: CustomFieldType,
|
||||
created: Timestamp
|
||||
)
|
||||
|
||||
object RCustomField {
|
||||
|
||||
val table = fr"custom_field"
|
||||
|
||||
object Columns {
|
||||
|
||||
val id = Column("id")
|
||||
val name = Column("name")
|
||||
val cid = Column("cid")
|
||||
val ftype = Column("ftype")
|
||||
val created = Column("created")
|
||||
|
||||
val all = List(id, name, cid, ftype, created)
|
||||
}
|
||||
|
||||
def insert(value: RCustomField): ConnectionIO[Int] = {
|
||||
val sql = insertRow(
|
||||
table,
|
||||
Columns.all,
|
||||
fr"${value.id},${value.name},${value.cid},${value.ftype},${value.created}"
|
||||
)
|
||||
sql.update.run
|
||||
}
|
||||
|
||||
def findAll(coll: Ident): ConnectionIO[Vector[RCustomField]] =
|
||||
selectSimple(Columns.all, table, Columns.cid.is(coll)).query[RCustomField].to[Vector]
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package docspell.store.records
|
||||
|
||||
import docspell.common._
|
||||
import docspell.store.impl.Column
|
||||
import docspell.store.impl.Implicits._
|
||||
|
||||
import doobie._
|
||||
import doobie.implicits._
|
||||
|
||||
case class RCustomFieldValue(
|
||||
id: Ident,
|
||||
itemId: Ident,
|
||||
field: Ident,
|
||||
valueText: Option[String],
|
||||
valueNumeric: Option[BigDecimal]
|
||||
)
|
||||
|
||||
object RCustomFieldValue {
|
||||
|
||||
val table = fr"custom_field_value"
|
||||
|
||||
object Columns {
|
||||
|
||||
val id = Column("id")
|
||||
val itemId = Column("item_id")
|
||||
val field = Column("field")
|
||||
val valueText = Column("value_text")
|
||||
val valueNumeric = Column("value_numeric")
|
||||
|
||||
val all = List(id, itemId, field, valueText, valueNumeric)
|
||||
}
|
||||
|
||||
def insert(value: RCustomFieldValue): ConnectionIO[Int] = {
|
||||
val sql = insertRow(
|
||||
table,
|
||||
Columns.all,
|
||||
fr"${value.id},${value.itemId},${value.field},${value.valueText},${value.valueNumeric}"
|
||||
)
|
||||
sql.update.run
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user