Store intervals in templates

This commit is contained in:
jude 2023-09-23 22:47:21 +01:00
parent 52cf642455
commit 56ffc43616
5 changed files with 30 additions and 13 deletions

View File

@ -0,0 +1,3 @@
ALTER TABLE `reminder_template` ADD COLUMN `interval_seconds` INT UNSIGNED;
ALTER TABLE `reminder_template` ADD COLUMN `interval_days` INT UNSIGNED;
ALTER TABLE `reminder_template` ADD COLUMN `interval_months` INT UNSIGNED;

View File

@ -388,6 +388,9 @@ pub async fn export_reminder_templates(
embed_thumbnail_url, embed_thumbnail_url,
embed_title, embed_title,
embed_fields, embed_fields,
interval_seconds,
interval_days,
interval_months,
tts, tts,
username username
FROM reminder_template WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)", FROM reminder_template WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)",

View File

@ -232,10 +232,15 @@ pub async fn create_reminder_template(
embed_thumbnail_url, embed_thumbnail_url,
embed_title, embed_title,
embed_fields, embed_fields,
interval_seconds,
interval_days,
interval_months,
tts, tts,
username username
) VALUES ((SELECT id FROM guilds WHERE guild = ?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", ) VALUES ((SELECT id FROM guilds WHERE guild = ?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
id, name, ?, ?, ?, ?, ?, ?, ?)",
id,
name,
reminder_template.attachment, reminder_template.attachment,
reminder_template.attachment_name, reminder_template.attachment_name,
reminder_template.avatar, reminder_template.avatar,
@ -250,15 +255,16 @@ pub async fn create_reminder_template(
reminder_template.embed_thumbnail_url, reminder_template.embed_thumbnail_url,
reminder_template.embed_title, reminder_template.embed_title,
reminder_template.embed_fields, reminder_template.embed_fields,
reminder_template.interval_seconds,
reminder_template.interval_days,
reminder_template.interval_months,
reminder_template.tts, reminder_template.tts,
reminder_template.username, reminder_template.username,
) )
.fetch_all(pool.inner()) .fetch_all(pool.inner())
.await .await
{ {
Ok(_) => { Ok(_) => Ok(json!({})),
Ok(json!({}))
}
Err(e) => { Err(e) => {
warn!("Could not create template for {}: {:?}", id, e); warn!("Could not create template for {}: {:?}", id, e);

View File

@ -80,6 +80,9 @@ pub struct ReminderTemplate {
embed_thumbnail_url: Option<String>, embed_thumbnail_url: Option<String>,
embed_title: String, embed_title: String,
embed_fields: Option<Json<Vec<EmbedField>>>, embed_fields: Option<Json<Vec<EmbedField>>>,
interval_seconds: Option<u32>,
interval_days: Option<u32>,
interval_months: Option<u32>,
tts: bool, tts: bool,
username: Option<String>, username: Option<String>,
} }
@ -102,6 +105,9 @@ pub struct ReminderTemplateCsv {
embed_thumbnail_url: Option<String>, embed_thumbnail_url: Option<String>,
embed_title: String, embed_title: String,
embed_fields: Option<String>, embed_fields: Option<String>,
interval_seconds: Option<u32>,
interval_days: Option<u32>,
interval_months: Option<u32>,
tts: bool, tts: bool,
username: Option<String>, username: Option<String>,
} }

View File

@ -223,11 +223,10 @@ async function fetch_reminders(guild_id) {
} }
async function serialize_reminder(node, mode) { async function serialize_reminder(node, mode) {
let interval, utc_time, expiration_time; let utc_time, expiration_time;
let interval = get_interval(node);
if (mode !== "template") { if (mode !== "template") {
interval = get_interval(node);
utc_time = luxon.DateTime.fromISO( utc_time = luxon.DateTime.fromISO(
node.querySelector('input[name="time"]').value node.querySelector('input[name="time"]').value
).setZone("UTC"); ).setZone("UTC");
@ -356,9 +355,9 @@ async function serialize_reminder(node, mode) {
embed_title: embed_title, embed_title: embed_title,
embed_fields: fields, embed_fields: fields,
expires: expiration_time, expires: expiration_time,
interval_seconds: mode !== "template" ? interval.seconds : null, interval_seconds: interval.seconds,
interval_days: mode !== "template" ? interval.days : null, interval_days: interval.days,
interval_months: mode !== "template" ? interval.months : null, interval_months: interval.months,
name: node.querySelector('input[name="name"]').value, name: node.querySelector('input[name="name"]').value,
tts: node.querySelector('input[name="tts"]').checked, tts: node.querySelector('input[name="tts"]').checked,
username: node.querySelector('input[name="username"]').value, username: node.querySelector('input[name="username"]').value,
@ -420,9 +419,9 @@ function deserialize_reminder(reminder, frame, mode) {
.insertBefore(embed_field, lastChild); .insertBefore(embed_field, lastChild);
} }
if (mode !== "template") { if (reminder["interval_seconds"]) update_interval(frame);
if (reminder["interval_seconds"]) update_interval(frame);
if (mode !== "template") {
let $enableBtn = frame.querySelector(".disable-enable"); let $enableBtn = frame.querySelector(".disable-enable");
$enableBtn.dataset["action"] = reminder["enabled"] ? "disable" : "enable"; $enableBtn.dataset["action"] = reminder["enabled"] ? "disable" : "enable";