mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-03-28 09:45:07 +00:00
Connect multiple items to a mail
This commit is contained in:
parent
7a3289c41d
commit
2d69d39dd1
@ -18,13 +18,21 @@ CREATE TABLE "useremail" (
|
||||
CREATE TABLE "sentmail" (
|
||||
"id" varchar(254) not null primary key,
|
||||
"uid" varchar(254) not null,
|
||||
"item_id" varchar(254) not null,
|
||||
"message_id" varchar(254) not null,
|
||||
"sender" varchar(254) not null,
|
||||
"subject" varchar(254) not null,
|
||||
"recipients" varchar(254) not null,
|
||||
"body" text not null,
|
||||
"created" timestamp not null,
|
||||
foreign key("uid") references "user_"("uid"),
|
||||
foreign key("item_id") references "item"("itemid")
|
||||
foreign key("uid") references "user_"("uid")
|
||||
);
|
||||
|
||||
CREATE TABLE "sentmailitem" (
|
||||
"id" varchar(254) not null primary key,
|
||||
"item_id" varchar(254) not null,
|
||||
"sentmail_id" varchar(254) not null,
|
||||
"created" timestamp not null,
|
||||
unique ("item_id", "sentmail_id"),
|
||||
foreign key("item_id") references "item"("itemid"),
|
||||
foreign key("sentmail_id") references "sentmail"("id")
|
||||
);
|
||||
|
@ -11,7 +11,6 @@ import emil.MailAddress
|
||||
case class RSentMail(
|
||||
id: Ident,
|
||||
uid: Ident,
|
||||
itemId: Ident,
|
||||
messageId: String,
|
||||
sender: MailAddress,
|
||||
subject: String,
|
||||
@ -27,7 +26,6 @@ object RSentMail {
|
||||
object Columns {
|
||||
val id = Column("id")
|
||||
val uid = Column("uid")
|
||||
val itemId = Column("item_id")
|
||||
val messageId = Column("message_id")
|
||||
val sender = Column("sender")
|
||||
val subject = Column("subject")
|
||||
@ -38,7 +36,6 @@ object RSentMail {
|
||||
val all = List(
|
||||
id,
|
||||
uid,
|
||||
itemId,
|
||||
messageId,
|
||||
sender,
|
||||
subject,
|
||||
@ -54,7 +51,7 @@ object RSentMail {
|
||||
insertRow(
|
||||
table,
|
||||
all,
|
||||
sql"${v.id},${v.uid},${v.itemId},${v.messageId},${v.sender},${v.subject},${v.recipients},${v.body},${v.created}"
|
||||
sql"${v.id},${v.uid},${v.messageId},${v.sender},${v.subject},${v.recipients},${v.body},${v.created}"
|
||||
).update.run
|
||||
|
||||
def findByUser(userId: Ident): Stream[ConnectionIO, RSentMail] =
|
||||
|
@ -0,0 +1,52 @@
|
||||
package docspell.store.records
|
||||
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
import doobie._
|
||||
import doobie.implicits._
|
||||
import docspell.common._
|
||||
import docspell.store.impl.Column
|
||||
import docspell.store.impl.Implicits._
|
||||
|
||||
case class RSentMailItem(
|
||||
id: Ident,
|
||||
itemId: Ident,
|
||||
sentMailId: Ident,
|
||||
created: Timestamp
|
||||
) {}
|
||||
|
||||
object RSentMailItem {
|
||||
|
||||
def create[F[_]: Sync](itemId: Ident, sentmailId: Ident, created: Option[Timestamp] = None): F[RSentMailItem] =
|
||||
for {
|
||||
id <- Ident.randomId[F]
|
||||
now <- created.map(_.pure[F]).getOrElse(Timestamp.current[F])
|
||||
} yield RSentMailItem(id, itemId, sentmailId, now)
|
||||
|
||||
|
||||
val table = fr"sentmailitem"
|
||||
|
||||
object Columns {
|
||||
val id = Column("id")
|
||||
val itemId = Column("item_id")
|
||||
val sentMailId = Column("sentmail_id")
|
||||
val created = Column("created")
|
||||
|
||||
val all = List(
|
||||
id,
|
||||
itemId,
|
||||
sentMailId,
|
||||
created
|
||||
)
|
||||
}
|
||||
|
||||
import Columns._
|
||||
|
||||
def insert(v: RSentMailItem): ConnectionIO[Int] =
|
||||
insertRow(
|
||||
table,
|
||||
all,
|
||||
sql"${v.id},${v.itemId},${v.sentMailId},${v.created}"
|
||||
).update.run
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user