fix: cleaned up file format handling to stop constant mapping

This commit is contained in:
2026-04-25 13:01:38 +02:00
parent b90a4569da
commit 00a997293b
6 changed files with 71 additions and 142 deletions

View File

@@ -341,7 +341,6 @@ defmodule BDS.Media do
defp upsert_media_from_sidecar(project, sidecar_path) do
{:ok, fields} = sidecar_path |> File.read!() |> Sidecar.parse_document()
fields = normalize_media_sidecar_fields(fields)
relative_sidecar_path = Path.relative_to(sidecar_path, Projects.project_data_dir(project))
relative_file_path = String.trim_trailing(relative_sidecar_path, ".meta")
filename = Path.basename(relative_file_path)
@@ -351,8 +350,8 @@ defmodule BDS.Media do
id: Map.get(fields, "id") || Ecto.UUID.generate(),
project_id: project.id,
filename: filename,
original_name: Map.get(fields, "original_name") || filename,
mime_type: Map.get(fields, "mime_type") || detect_mime(filename),
original_name: Map.get(fields, "originalName") || filename,
mime_type: Map.get(fields, "mimeType") || detect_mime(filename),
size: Map.get(fields, "size", 0),
width: blank_to_nil(Map.get(fields, "width")),
height: blank_to_nil(Map.get(fields, "height")),
@@ -365,8 +364,8 @@ defmodule BDS.Media do
sidecar_path: relative_sidecar_path,
checksum: nil,
tags: Map.get(fields, "tags", []),
created_at: Map.get(fields, "created_at", now),
updated_at: Map.get(fields, "updated_at", now)
created_at: Map.get(fields, "createdAt", now),
updated_at: Map.get(fields, "updatedAt", now)
}
media =
@@ -436,7 +435,6 @@ defmodule BDS.Media do
media ->
{:ok, fields} = sidecar_path |> File.read!() |> Sidecar.parse_document()
fields = normalize_media_sidecar_fields(fields)
now = Persistence.now_ms()
language = Map.fetch!(fields, "language")
@@ -610,23 +608,6 @@ defmodule BDS.Media do
Persistence.atomic_write(path, contents)
end
defp normalize_media_sidecar_fields(fields) when is_map(fields) do
[
{"originalName", "original_name"},
{"mimeType", "mime_type"},
{"createdAt", "created_at"},
{"updatedAt", "updated_at"},
{"translationFor", "translation_for"},
{"linkedPostIds", "linked_post_ids"}
]
|> Enum.reduce(fields, fn {file_key, current_key}, acc ->
case Map.fetch(acc, file_key) do
{:ok, value} -> Map.put_new(acc, current_key, value)
:error -> acc
end
end)
end
defp linked_post_ids(media_id) do
case Repo.query("SELECT post_id FROM post_media WHERE media_id = ? ORDER BY sort_order ASC, post_id ASC", [media_id]) do
{:ok, %{rows: rows}} -> Enum.map(rows, fn [post_id] -> post_id end)