From bf3beba458ec5dbbe3c4ca06ffa7c8f7c1a7a5cc Mon Sep 17 00:00:00 2001 From: Andrew Pietila Date: Wed, 22 Jan 2025 22:51:31 -0600 Subject: [PATCH] Start implementing the stuff that AERC requests as part of Email/get --- migrations/20250123043534_messageKeywords.js | 24 ++++++++++++++++++++ server.js | 9 ++++++++ 2 files changed, 33 insertions(+) create mode 100644 migrations/20250123043534_messageKeywords.js diff --git a/migrations/20250123043534_messageKeywords.js b/migrations/20250123043534_messageKeywords.js new file mode 100644 index 0000000..b6a4213 --- /dev/null +++ b/migrations/20250123043534_messageKeywords.js @@ -0,0 +1,24 @@ +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.up = async function(knex) { + await knex.schema.createTable("keywords", (table) => { + table.increments("id", {primaryKey: true}); + table.integer("messageState"); + table.string("keyword"); + }); + + const messages = await knex("messages").select().where("read", "=", true); + await Promise.all(messages.map(async (row) => { + await knex("keywords").insert({messageState: row.state, keyword: "$seen"}); + })); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.down = function(knex) { + return knex.schema.dropTable("keywords"); +}; diff --git a/server.js b/server.js index 24f1376..9bb5162 100644 --- a/server.js +++ b/server.js @@ -232,6 +232,15 @@ app.post("/api/jmap/api/", bodyParser.json(), async (req, res) => { ] } } + // { + // "using":["urn:ietf:params:jmap:mail"], + // "methodCalls":[["Email/get",{ + // "ids":["1","12","2","3","4","5","6","7","8","9"], + // "properties":["id","blobId","mailboxIds","keywords","size","receivedAt","headers","messageId","inReplyTo","references","from","to","cc","bcc","replyTo","subject","bodyStructure"]},"0"]]} + // id: state + // blobId: state + // mailboxIds: {INBOX: true} // TODO: Implement more mailboxes. + // keywords: keywords table, {keyword_column: true} return [ "error",