Configure SQLite busy_timeout PRAGMA to 5000ms so queries wait for locks to be released instead of failing immediately. This prevents Oban job queue from getting stuck with 'Database busy' errors during concurrent operations.
105 lines
3.6 KiB
Elixir
105 lines
3.6 KiB
Elixir
# This file is responsible for configuring your application
|
|
# and its dependencies with the aid of the Config module.
|
|
#
|
|
# This configuration file is loaded before any dependency and
|
|
# is restricted to this project.
|
|
|
|
# General application configuration
|
|
import Config
|
|
|
|
config :pinchflat,
|
|
ecto_repos: [Pinchflat.Repo],
|
|
generators: [timestamp_type: :utc_datetime],
|
|
env: config_env(),
|
|
# Specifying backend data here makes mocking and local testing SUPER easy
|
|
yt_dlp_executable: System.find_executable("yt-dlp"),
|
|
apprise_executable: System.find_executable("apprise"),
|
|
yt_dlp_runner: Pinchflat.YtDlp.CommandRunner,
|
|
apprise_runner: Pinchflat.Lifecycle.Notifications.CommandRunner,
|
|
media_directory: "/downloads",
|
|
# The user may or may not store metadata for their needs, but the app will always store its copy
|
|
metadata_directory: "/config/metadata",
|
|
extras_directory: "/config/extras",
|
|
tmpfile_directory: Path.join([System.tmp_dir!(), "pinchflat", "data"]),
|
|
# Setting BASIC_AUTH_USERNAME and BASIC_AUTH_PASSWORD implies you want to use basic auth.
|
|
# If either is unset, basic auth will not be used.
|
|
basic_auth_username: "",
|
|
basic_auth_password: "",
|
|
expose_feed_endpoints: false,
|
|
file_watcher_poll_interval: 1000,
|
|
timezone: "UTC",
|
|
base_route_path: "/"
|
|
|
|
config :pinchflat, Pinchflat.Repo,
|
|
journal_mode: :wal,
|
|
pool_size: 5,
|
|
# Set busy_timeout to 5 seconds to prevent "Database busy" errors during concurrent operations.
|
|
# Without this, queries fail immediately when the database is locked instead of waiting.
|
|
busy_timeout: 5000
|
|
|
|
# Configures the endpoint
|
|
config :pinchflat, PinchflatWeb.Endpoint,
|
|
url: [host: "localhost", port: 8945],
|
|
# NOTE: this must be updated if ever deployed traditionally (ie: not self-hosted)
|
|
check_origin: false,
|
|
adapter: Phoenix.Endpoint.Cowboy2Adapter,
|
|
render_errors: [
|
|
formats: [html: PinchflatWeb.ErrorHTML, json: PinchflatWeb.ErrorJSON],
|
|
root_layout: {PinchflatWeb.Layouts, :root},
|
|
layout: {PinchflatWeb.Layouts, :app}
|
|
],
|
|
pubsub_server: Pinchflat.PubSub,
|
|
live_view: [signing_salt: "/t5878kO"]
|
|
|
|
config :pinchflat, Oban,
|
|
engine: Oban.Engines.Lite,
|
|
repo: Pinchflat.Repo
|
|
|
|
# Configures the mailer
|
|
#
|
|
# By default it uses the "Local" adapter which stores the emails
|
|
# locally. You can see the emails in your browser, at "/dev/mailbox".
|
|
#
|
|
# For production it's recommended to configure a different adapter
|
|
# at the `config/runtime.exs`.
|
|
config :pinchflat, Pinchflat.Mailer, adapter: Swoosh.Adapters.Local
|
|
|
|
# Configure esbuild (the version is required)
|
|
config :esbuild,
|
|
version: "0.17.11",
|
|
default: [
|
|
args:
|
|
~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*),
|
|
cd: Path.expand("../assets", __DIR__),
|
|
env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
|
|
]
|
|
|
|
# Configure tailwind (the version is required)
|
|
config :tailwind,
|
|
version: "3.4.3",
|
|
default: [
|
|
args: ~w(
|
|
--config=tailwind.config.js
|
|
--input=css/app.css
|
|
--output=../priv/static/assets/app.css
|
|
),
|
|
cd: Path.expand("../assets", __DIR__)
|
|
]
|
|
|
|
# Configures Elixir's Logger
|
|
config :logger, :default_formatter,
|
|
format: "$date $time $metadata[$level] | $message\n",
|
|
metadata: [:request_id]
|
|
|
|
# Use Jason for JSON parsing in Phoenix
|
|
config :phoenix, :json_library, Jason
|
|
|
|
config :pinchflat, Pinchflat.PromEx,
|
|
disabled: true,
|
|
manual_metrics_start_delay: :no_delay,
|
|
drop_metrics_groups: [],
|
|
metrics_server: :disabled
|
|
|
|
# Import environment specific config. This must remain at the bottom
|
|
# of this file so it overrides the configuration defined above.
|
|
import_config "#{config_env()}.exs"
|