feat: add configs for impor tlimits
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
9fd617e45a
commit
3f551c5f8d
3 changed files with 55 additions and 4 deletions
|
|
@ -21,4 +21,50 @@ defmodule Mv.Config do
|
|||
def sql_sandbox? do
|
||||
Application.get_env(:mv, :sql_sandbox, false)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the maximum file size for CSV imports in bytes.
|
||||
|
||||
Reads the `max_file_size_mb` value from the CSV import configuration
|
||||
and converts it to bytes.
|
||||
|
||||
## Returns
|
||||
|
||||
- Maximum file size in bytes (default: 10_485_760 bytes = 10 MB)
|
||||
|
||||
## Examples
|
||||
|
||||
iex> Mv.Config.csv_import_max_file_size_bytes()
|
||||
10_485_760
|
||||
"""
|
||||
@spec csv_import_max_file_size_bytes() :: non_neg_integer()
|
||||
def csv_import_max_file_size_bytes do
|
||||
max_file_size_mb = get_csv_import_config(:max_file_size_mb, 10)
|
||||
max_file_size_mb * 1024 * 1024
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the maximum number of rows allowed in CSV imports.
|
||||
|
||||
Reads the `max_rows` value from the CSV import configuration.
|
||||
|
||||
## Returns
|
||||
|
||||
- Maximum number of rows (default: 1000)
|
||||
|
||||
## Examples
|
||||
|
||||
iex> Mv.Config.csv_import_max_rows()
|
||||
1000
|
||||
"""
|
||||
@spec csv_import_max_rows() :: pos_integer()
|
||||
def csv_import_max_rows do
|
||||
get_csv_import_config(:max_rows, 1000)
|
||||
end
|
||||
|
||||
# Helper function to get CSV import config values
|
||||
defp get_csv_import_config(key, default) do
|
||||
Application.get_env(:mv, :csv_import, [])
|
||||
|> Keyword.get(key, default)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@ defmodule MvWeb.GlobalSettingsLive do
|
|||
on_mount {MvWeb.LiveHelpers, :ensure_user_role_loaded}
|
||||
|
||||
# CSV Import configuration constants
|
||||
# 10 MB
|
||||
@max_file_size_bytes 10_485_760
|
||||
@max_errors 50
|
||||
|
||||
@impl true
|
||||
|
|
@ -82,7 +80,7 @@ defmodule MvWeb.GlobalSettingsLive do
|
|||
|> allow_upload(:csv_file,
|
||||
accept: ~w(.csv),
|
||||
max_entries: 1,
|
||||
max_file_size: @max_file_size_bytes,
|
||||
max_file_size: Config.csv_import_max_file_size_bytes(),
|
||||
auto_upload: true
|
||||
)
|
||||
|
||||
|
|
@ -409,7 +407,8 @@ defmodule MvWeb.GlobalSettingsLive do
|
|||
# Processes CSV upload and starts import
|
||||
defp process_csv_upload(socket) do
|
||||
with {:ok, content} <- consume_and_read_csv(socket),
|
||||
{:ok, import_state} <- MemberCSV.prepare(content) do
|
||||
{:ok, import_state} <-
|
||||
MemberCSV.prepare(content, max_rows: Config.csv_import_max_rows()) do
|
||||
start_import(socket, import_state)
|
||||
else
|
||||
{:error, reason} when is_binary(reason) ->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue