Uploading Multiple Images but its storing only one Image in DB

Hey there,
Hope you’ll doing amazingly. I am building an app using liveview in pheonix. But the problem I’m facing right now is that when I’m uploading various files through one input field, its storing only one image from multiple uploaded images. It took my 3 days in applying various techniques but till yet I have not reached any point.
Now, I think my rest of code is working fine I need to make a query for my images i.e. Repo.insert(). But still not sure why its not saving all of them and where’s the real bug?
Here’s the code:
form_component.ex:
defp save_files(socket, :new, file_params) do
file = put_file_url(socket, file_params)
case Files.create_files(file, &consume_files(socket, &1)) do
{:ok, _file} →
{:noreply,
socket
|> put_flash(:success, “File created successfully”)
|> push_redirect(to: socket.assigns.return_to)}
{:error, %Ecto.Changeset{} = changeset} →
{:noreply, assign(socket, changeset: changeset)}
end
end

def ext(entry) do
[ext | _] = MIME.extensions(entry.client_type)
ext

end

defp put_file_url(socket, file) do
{completed, []} = uploaded_entries(socket, :uploaded_file)

Get File Details

[fd | _] =
  for entry <- completed do
    entry
  end
url = Routes.static_path(socket, "/uploads/#{fd.uuid}.#{ext(fd)}")
name = fd.client_name
size = fd.client_size
type = fd.client_type
# Set File data
file = %{file | "url" => url, "name" => name, "size" => size, "type" => type}

end

def consume_files(socket, files) do
case uploaded_entries(socket, :uploaded_file) do
{[_ | _] = entries, []} →
uploaded_file =
for entry ← entries do
consume_uploaded_entry(socket, entry, fn %{path: path} →
# dest = Path.join(“priv/static/uploads”, path.basename(path))
dest =
Path.join([
:code.priv_dir(:initium),
“static”,
“/uploads/#{entry.uuid}.#{ext(entry)}”
])
File.cp!(path, dest)
Routes.static_path(socket, “/uploads/#{Path.basename(dest)}”)
end)
# {:noreply, update(socket, :entry, &(&1 ++ entry))}
end
{:noeply, update(socket, :uploaded_files, &(&1 ++ uploaded_file))}
_ →
{:noreply, socket}
end
{:ok, files}
end

file.ex:
def create_files(attrs \ %{}, after_save \ &{:ok, &1}) do
%File{}
|> after_save(after_save)
|> File.changeset(attrs)
|> Repo.insert()
end

defp after_save({:ok, file}, func) do
{:ok, _file} = func.(file)
end

defp after_save(error, _func) do
error
end