From cc33fa659597ff0ebc0dbaa6f007106073005c7a Mon Sep 17 00:00:00 2001 From: Leeingnyo Date: Sun, 19 Dec 2021 01:18:31 +0900 Subject: [PATCH 1/6] Fix bug: remove titles not in root library anymore --- src/library/library.cr | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/library/library.cr b/src/library/library.cr index 93eac0c..2a5de7d 100644 --- a/src/library/library.cr +++ b/src/library/library.cr @@ -136,8 +136,12 @@ class Library deleted_entry_ids: [] of String, } + library_paths = (Dir.entries @dir) + .select { |fn| !fn.starts_with? "." } + .map { |fn| File.join @dir, fn } @title_ids.select! do |title_id| title = @title_hash[title_id] + next false unless library_paths.includes? title.dir existence = title.examine examine_context unless existence examine_context["deleted_title_ids"].concat [title_id] + @@ -152,9 +156,7 @@ class Library end cache = examine_context["cached_contents_signature"] - (Dir.entries @dir) - .select { |fn| !fn.starts_with? "." } - .map { |fn| File.join @dir, fn } + library_paths .select { |path| !(remained_title_dirs.includes? path) } .select { |path| File.directory? path } .map { |path| Title.new path, "", cache } From 0fa2bfa744be72b8e3052c990024e079ee7edab1 Mon Sep 17 00:00:00 2001 From: Leeingnyo Date: Sun, 19 Dec 2021 16:40:38 +0900 Subject: [PATCH 2/6] Fix bug on examine --- src/library/title.cr | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/library/title.cr b/src/library/title.cr index 9b797f4..d45e4eb 100644 --- a/src/library/title.cr +++ b/src/library/title.cr @@ -102,7 +102,11 @@ class Title previous_titles_size = @title_ids.size @title_ids.select! do |title_id| - title = Library.default.get_title! title_id + title = Library.default.get_title title_id + unless title # for if data consistency broken + context["deleted_title_ids"].concat [title_id] + next false + end existence = title.examine context unless existence context["deleted_title_ids"].concat [title_id] + @@ -137,6 +141,18 @@ class Title Library.default.title_hash[title.id] = title @title_ids << title.id is_titles_added = true + + # We think they are removed, but they are here! + # Cancel reserved jobs + revival_title_ids = [title.id] + title.deep_titles.map &.id + context["deleted_title_ids"].select! do |id| + !(revival_title_ids.includes? id) + end + revival_entry_ids = title.deep_entries.map &.id + context["deleted_entry_ids"].select! do |id| + !(revival_entry_ids.includes? id) + end + next end if is_supported_file path @@ -167,7 +183,12 @@ class Title end end - true + if @title_ids.size > 0 || @entries.size > 0 + true + else + context["deleted_title_ids"].concat [@id] + false + end end alias SortContext = NamedTuple(username: String, opt: SortOptions) From 70259d8e502614f71fc365a2873964d512fa735e Mon Sep 17 00:00:00 2001 From: Leeingnyo Date: Sun, 19 Dec 2021 17:03:10 +0900 Subject: [PATCH 3/6] Do same with an entry --- src/library/title.cr | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library/title.cr b/src/library/title.cr index d45e4eb..24c4841 100644 --- a/src/library/title.cr +++ b/src/library/title.cr @@ -161,6 +161,7 @@ class Title if entry.pages > 0 || entry.err_msg @entries << entry is_entries_added = true + context["deleted_entry_ids"].select! { |id| entry.id != id } end end end From 6d834e9164ed4b20a24e27a575189a9427c47014 Mon Sep 17 00:00:00 2001 From: Leeingnyo Date: Sun, 19 Dec 2021 17:03:39 +0900 Subject: [PATCH 4/6] Fix formatting --- src/routes/admin.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/admin.cr b/src/routes/admin.cr index fd63ec8..6ff36db 100644 --- a/src/routes/admin.cr +++ b/src/routes/admin.cr @@ -61,7 +61,7 @@ struct AdminRouter redirect_url = URI.new \ path: "/admin/user/edit", query: hash_to_query({"username" => original_username, \ - "admin" => admin, "error" => e.message}) + "admin" => admin, "error" => e.message}) redirect env, redirect_url.to_s end From f9254c49a10fafcbb9e8be794bc33ffd8ca60dce Mon Sep 17 00:00:00 2001 From: Leeingnyo Date: Sun, 19 Dec 2021 17:14:47 +0900 Subject: [PATCH 5/6] Fix lint error --- src/library/title.cr | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/library/title.cr b/src/library/title.cr index 24c4841..4886f3d 100644 --- a/src/library/title.cr +++ b/src/library/title.cr @@ -145,12 +145,12 @@ class Title # We think they are removed, but they are here! # Cancel reserved jobs revival_title_ids = [title.id] + title.deep_titles.map &.id - context["deleted_title_ids"].select! do |id| - !(revival_title_ids.includes? id) + context["deleted_title_ids"].select! do |deleted_title_id| + !(revival_title_ids.includes? deleted_title_id) end revival_entry_ids = title.deep_entries.map &.id - context["deleted_entry_ids"].select! do |id| - !(revival_entry_ids.includes? id) + context["deleted_entry_ids"].select! do |deleted_entry_id| + !(revival_entry_ids.includes? deleted_entry_id) end next @@ -161,7 +161,9 @@ class Title if entry.pages > 0 || entry.err_msg @entries << entry is_entries_added = true - context["deleted_entry_ids"].select! { |id| entry.id != id } + context["deleted_entry_ids"].select! do |deleted_entry_id| + entry.id != deleted_entry_id + end end end end From 4eda55552b5506417c5d6927b604ce92d2c7f3be Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Wed, 22 Dec 2021 12:16:44 +0000 Subject: [PATCH 6/6] Linter fix --- src/routes/admin.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/admin.cr b/src/routes/admin.cr index 6ff36db..fd63ec8 100644 --- a/src/routes/admin.cr +++ b/src/routes/admin.cr @@ -61,7 +61,7 @@ struct AdminRouter redirect_url = URI.new \ path: "/admin/user/edit", query: hash_to_query({"username" => original_username, \ - "admin" => admin, "error" => e.message}) + "admin" => admin, "error" => e.message}) redirect env, redirect_url.to_s end