* Added sleep interval to settings * Added new sleep setting to yt-dlp runner and added tests * Added setting for form; updated setting name * Updated form label * Prevented saving/updating of media items if being throttled by youtube * Added the bot message to the list of non-retryable errors * Fixed typo
50 lines
1.2 KiB
Elixir
50 lines
1.2 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
|
|
]
|
|
|
|
@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
|
|
|
|
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: 0)
|
|
end
|
|
end
|