Move file_path to Domus::App
https://claude.ai/code/session_018Ym45siELMvsBQj4w9QAXf
change
commit dc479f3e8158420811612cf92bab763296c06c3c
author Alpha Chen <alpha@kejadlen.dev>
date
parent 2be57cea
diff --git a/lib/app.rb b/lib/app.rb
index 268a48c..136c78f 100644
--- a/lib/app.rb
+++ b/lib/app.rb
@@ -11,5 +11,9 @@ module Domus
       @config = config
       @db = Sequel.sqlite(config.database_url)
     end
+
+    def file_path(record)
+      ::File.join(config.storage_path, "files", "#{record[:id]}#{record[:extension]}")
+    end
   end
 end
diff --git a/lib/models.rb b/lib/models.rb
index fe04c82..00acb70 100644
--- a/lib/models.rb
+++ b/lib/models.rb
@@ -2,6 +2,5 @@
 
 module Domus
   class FileRecord < Sequel::Model(:files)
-    def storage_path(config) = ::File.join(config.storage_path, "files", "#{id}#{extension}")
   end
 end
diff --git a/lib/web.rb b/lib/web.rb
index 5e58dfa..fe3a91a 100644
--- a/lib/web.rb
+++ b/lib/web.rb
@@ -36,7 +36,6 @@ module Domus
 
     def app = opts.fetch(:app)
     def db = app.db
-    def storage_path = app.config.storage_path
 
     def save_file(params)
       upload = params["file"]
@@ -51,9 +50,9 @@ module Domus
         created_at: now
       )
 
-      dest_dir = ::File.join(storage_path, "files")
-      FileUtils.mkdir_p(dest_dir)
-      FileUtils.cp(upload[:tempfile].path, ::File.join(dest_dir, "#{id}#{ext}"))
+      dest = app.file_path(id: id, extension: ext)
+      FileUtils.mkdir_p(::File.dirname(dest))
+      FileUtils.cp(upload[:tempfile].path, dest)
     end
   end
 end