Store the original message when linking

Now we can search the database for non-original messages Only for when
we want to scan for editable messages and stuff
main
Charlotte Som 2022-04-16 11:31:06 +01:00
parent baeaa8575b
commit 316835c2f6
2 changed files with 25 additions and 6 deletions

View File

@ -3,8 +3,10 @@ CREATE TABLE message_links (
) STRICT; ) STRICT;
CREATE TABLE messages ( CREATE TABLE messages (
link_id INTEGER NOT NULL REFERENCES message_links(id), message_id INTEGER PRIMARY KEY,
link_id INTEGER NOT NULL REFERENCES message_links(id),
service TEXT NOT NULL, service TEXT NOT NULL,
channel TEXT NOT NULL, channel TEXT NOT NULL,
message TEXT NOT NULL message TEXT NOT NULL,
) original INTEGER
) STRICT;

View File

@ -55,17 +55,34 @@ pub async fn link_messages(
.await? .await?
.last_insert_rowid(); .last_insert_rowid();
for resultant in std::iter::once(origin).chain(messages) { let original_id = {
let service = &origin.channel.service;
let channel = &origin.channel.id;
let message = &origin.message_id;
let query = sqlx::query!(
"INSERT INTO messages (link_id, service, channel, message, original) VALUES (?, ?, ?, ?, NULL)",
message_link,
service,
channel,
message
);
query.execute(&mut *conn).await?.last_insert_rowid()
};
for resultant in messages {
let service = &resultant.channel.service; let service = &resultant.channel.service;
let channel = &resultant.channel.id; let channel = &resultant.channel.id;
let message = &resultant.message_id; let message = &resultant.message_id;
let query = sqlx::query!( let query = sqlx::query!(
"INSERT INTO messages VALUES (?, ?, ?, ?)", "INSERT INTO messages (link_id, service, channel, message, original) VALUES (?, ?, ?, ?, ?)",
message_link, message_link,
service, service,
channel, channel,
message message,
original_id
); );
let _ = query.execute(&mut *conn).await?; let _ = query.execute(&mut *conn).await?;