From e7583ce788728ad248553f9201df0072a582c20a Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Sun, 16 Feb 2020 04:01:30 +0000 Subject: [PATCH] - create scan method to prepare for periodic scanning --- src/library.cr | 23 ++++++++++++++--------- src/server.cr | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/library.cr b/src/library.cr index e6b3b96..8d416e4 100644 --- a/src/library.cr +++ b/src/library.cr @@ -144,17 +144,22 @@ end class Library JSON.mapping dir: String, titles: Array(Title) - def initialize(dir : String) - @dir = dir - unless Dir.exists? dir - Dir.mkdir_p dir - end - @titles = (Dir.entries dir) - .select { |path| File.directory? File.join dir, path } - .map { |path| Title.new File.join dir, path } - .select { |title| !title.entries.empty? } + def initialize(@dir) + # explicitly initialize @titles to bypass the compiler check. it will + # be filled with actuall Titles in the `scan` call below + @titles = [] of Title + scan end def get_title(name) @titles.find { |t| t.title == name } end + def scan + unless Dir.exists? @dir + Dir.mkdir_p @dir + end + @titles = (Dir.entries @dir) + .select { |path| File.directory? File.join @dir, path } + .map { |path| Title.new File.join @dir, path } + .select { |title| !title.entries.empty? } + end end diff --git a/src/server.cr b/src/server.cr index 3374c8d..1f43ebe 100644 --- a/src/server.cr +++ b/src/server.cr @@ -265,7 +265,7 @@ class Server post "/api/admin/scan" do |env| start = Time.utc - @library = Library.new @config.@library_path + @library.scan ms = (Time.utc - start).total_milliseconds send_json env, { "milliseconds" => ms,