mirror of
https://github.com/stalwartlabs/mail-server.git
synced 2025-02-23 07:23:21 +08:00
92 lines
No EOL
1.8 KiB
TOML
92 lines
No EOL
1.8 KiB
TOML
I have the following SQLite table for storing email data:
|
|
|
|
CREATE TABLE email (
|
|
email_id INTEGER PRIMARY KEY,
|
|
blob_id TEXT NOT NULL,
|
|
thread_id INTEGER NOT NULL,
|
|
size INTEGER NOT NULL,
|
|
received_at TIMESTAMP NOT NULL,
|
|
message_id TEXT NOT NULL,
|
|
in_reply_to TEXT NOT NULL,
|
|
sender TEXT NOT NULL,
|
|
from TEXT NOT NULL,
|
|
to TEXT NOT NULL,
|
|
cc TEXT NOT NULL,
|
|
bcc TEXT NOT NULL,
|
|
reply_to TEXT NOT NULL,
|
|
subject TEXT NOT NULL,
|
|
sent_at TIMESTAMP NOT NULL,
|
|
has_attachment BOOL NOT NULL,
|
|
preview TEXT NOT NULL
|
|
);
|
|
|
|
The mailboxes and keywords for each message are stored in separate tables:
|
|
|
|
CREATE TABLE email_mailbox (
|
|
email_id INTEGER PRIMARY KEY,
|
|
mailbox_id INTEGER NOT NULL,
|
|
)
|
|
|
|
CREATE TABLE email_keyword (
|
|
email_id INTEGER PRIMARY KEY,
|
|
keyword TEXT NOT NULL
|
|
);
|
|
|
|
How would you write a SQLite query to list the email IDs of all the Emails with the subject "sales" sorted by messages that belong to the same Thread and have a the keyword "draft", then sorted by received at and then has attachment.
|
|
|
|
|
|
[email]
|
|
id: INT
|
|
blob_id: HASH
|
|
thread_id: INT
|
|
size: INT
|
|
received_at: TIMESTAMP
|
|
message_id: TEXT
|
|
in_reply_to: TEXT
|
|
sender: TEXT
|
|
from: TEXT
|
|
to: TEXT
|
|
cc: TEXT
|
|
bcc: TEXT
|
|
reply_to: TEXT
|
|
subject: TEXT
|
|
sent_at: TIMESTAMP
|
|
has_attachment: BOOL
|
|
preview: TEXT
|
|
|
|
[email_mailbox]
|
|
email_id: INT
|
|
mailbox_id: INT
|
|
imap_uid: INT
|
|
|
|
[email_keyword]
|
|
email_id: INT
|
|
keyword: TEXT
|
|
|
|
|
|
/*
|
|
|
|
o id
|
|
o blobId
|
|
o threadId
|
|
o mailboxIds
|
|
o keywords
|
|
o size
|
|
o receivedAt
|
|
o messageId
|
|
o inReplyTo
|
|
o sender
|
|
o from
|
|
o to
|
|
o cc
|
|
o bcc
|
|
o replyTo
|
|
o subject
|
|
o sentAt
|
|
o hasAttachment
|
|
o preview
|
|
|
|
[ "partId", "blobId", "size", "name", "type", "charset",
|
|
"disposition", "cid", "language", "location" ]
|
|
|
|
*/ |