From 92099dc7634679e9818be0bbb4989e0c8f7356f0 Mon Sep 17 00:00:00 2001
From: Matiss Janis Aboltins <matiss@mja.lv>
Date: Sat, 5 Aug 2023 12:40:17 +0100
Subject: [PATCH] :bug: (schedules) fix creating schedules with the same name
 (#1463)

Closes #1375
---
 .../1691233396000_add_schedule_next_date_tombstone.sql     | 5 +++++
 packages/loot-core/src/server/schedules/app.ts             | 7 ++++---
 upcoming-release-notes/1463.md                             | 6 ++++++
 3 files changed, 15 insertions(+), 3 deletions(-)
 create mode 100644 packages/loot-core/migrations/1691233396000_add_schedule_next_date_tombstone.sql
 create mode 100644 upcoming-release-notes/1463.md

diff --git a/packages/loot-core/migrations/1691233396000_add_schedule_next_date_tombstone.sql b/packages/loot-core/migrations/1691233396000_add_schedule_next_date_tombstone.sql
new file mode 100644
index 000000000..7e2f253c7
--- /dev/null
+++ b/packages/loot-core/migrations/1691233396000_add_schedule_next_date_tombstone.sql
@@ -0,0 +1,5 @@
+BEGIN TRANSACTION;
+
+ALTER TABLE schedules_next_date ADD COLUMN tombstone INTEGER DEFAULT 0;
+
+COMMIT;
diff --git a/packages/loot-core/src/server/schedules/app.ts b/packages/loot-core/src/server/schedules/app.ts
index 16df0c1c6..7939123c1 100644
--- a/packages/loot-core/src/server/schedules/app.ts
+++ b/packages/loot-core/src/server/schedules/app.ts
@@ -188,9 +188,10 @@ export async function setNextDate({
 // Methods
 
 async function checkIfScheduleExists(name, scheduleId) {
-  let idForName = await db.first('SELECT id from schedules WHERE name = ?', [
-    name,
-  ]);
+  let idForName = await db.first(
+    'SELECT id from schedules WHERE tombstone = 0 AND name = ?',
+    [name],
+  );
 
   if (idForName == null) {
     return false;
diff --git a/upcoming-release-notes/1463.md b/upcoming-release-notes/1463.md
new file mode 100644
index 000000000..476b02a34
--- /dev/null
+++ b/upcoming-release-notes/1463.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [MatissJanis]
+---
+
+Fix creating a new schedule with the same name as a deleted schedule
-- 
GitLab