If the email server ever loses state, the email's uid may be unreliable for determining what emails to retrieve from the mail server.
CREATE TABLE IF NOT EXISTS public.transactions(
uid INT PRIMARY KEY,
);
# Retrieve emails that are greater than the maximum UID
# and are from the forwarding email
for msg in mailbox.fetch(
imap_tools.A(
uid=imap_tools.U(f"{max_uid + 1}", "*"),
from_=ENV["FORWARDING_EMAIL"],
)
Storing the raw email bodies would provide redundancy for tracking state. If the mail server needed to be re-deployed, state could be maintained through a table of emails.
Why store the emails in the DB?
uid
may be unreliable for determining what emails to retrieve from the mail server.