* Added a new column for restricting filenames * Adds restrict-filenames to command runner * Added UI to settings form
55 lines
1.4 KiB
Elixir
55 lines
1.4 KiB
Elixir
defmodule Pinchflat.Settings.Setting do
|
|
@moduledoc """
|
|
The Setting schema.
|
|
"""
|
|
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
|
|
@allowed_fields [
|
|
:onboarding,
|
|
:pro_enabled,
|
|
:yt_dlp_version,
|
|
:apprise_version,
|
|
:apprise_server,
|
|
:video_codec_preference,
|
|
:audio_codec_preference,
|
|
:youtube_api_key,
|
|
:extractor_sleep_interval_seconds,
|
|
:download_throughput_limit,
|
|
:restrict_filenames
|
|
]
|
|
|
|
@required_fields [
|
|
:onboarding,
|
|
:pro_enabled,
|
|
:video_codec_preference,
|
|
:audio_codec_preference,
|
|
:extractor_sleep_interval_seconds
|
|
]
|
|
|
|
schema "settings" do
|
|
field :onboarding, :boolean, default: true
|
|
field :pro_enabled, :boolean, default: false
|
|
field :yt_dlp_version, :string
|
|
field :apprise_version, :string
|
|
field :apprise_server, :string
|
|
field :youtube_api_key, :string
|
|
field :route_token, :string
|
|
field :extractor_sleep_interval_seconds, :integer, default: 0
|
|
# This is a string because it accepts values like "100K" or "4.2M"
|
|
field :download_throughput_limit, :string
|
|
field :restrict_filenames, :boolean, default: false
|
|
|
|
field :video_codec_preference, :string
|
|
field :audio_codec_preference, :string
|
|
end
|
|
|
|
@doc false
|
|
def changeset(setting, attrs) do
|
|
setting
|
|
|> cast(attrs, @allowed_fields)
|
|
|> validate_required(@required_fields)
|
|
|> validate_number(:extractor_sleep_interval_seconds, greater_than_or_equal_to: 0)
|
|
end
|
|
end
|