summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-07-14 19:34:59 +0300
committerDawid Rycerz <dawid@rycerz.xyz>2025-07-14 19:34:59 +0300
commit50ce8cb96b2b218751c2fc2a6b19372f51846acc (patch)
treee2c634d2ce856062d527667d47815a05a53361c8 /config
parent0ab2e5ba2b0631b28b5b1405559237b3913c878f (diff)
feat: rewrite in rust
Diffstat (limited to 'config')
-rw-r--r--config/config.exs43
-rw-r--r--config/dev.exs76
-rw-r--r--config/prod.exs14
-rw-r--r--config/runtime.exs196
-rw-r--r--config/test.exs26
5 files changed, 0 insertions, 355 deletions
diff --git a/config/config.exs b/config/config.exs
deleted file mode 100644
index c3d80d5..0000000
--- a/config/config.exs
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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 :silmataivas,
- ecto_repos: [Silmataivas.Repo],
- generators: [timestamp_type: :utc_datetime]
-
-# Configures the endpoint
-config :silmataivas, SilmataivasWeb.Endpoint,
- url: [host: "localhost"],
- adapter: Bandit.PhoenixAdapter,
- render_errors: [
- formats: [json: SilmataivasWeb.ErrorJSON],
- layout: false
- ],
- pubsub_server: Silmataivas.PubSub,
- live_view: [signing_salt: "uNqy5+eV"]
-
-# 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`.
-
-# Configures Elixir's Logger
-config :logger, :console,
- format: "$time $metadata[$level] $message\n",
- metadata: [:request_id]
-
-# Use Jason for JSON parsing in Phoenix
-config :phoenix, :json_library, Jason
-
-# 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"
diff --git a/config/dev.exs b/config/dev.exs
deleted file mode 100644
index 2c2821e..0000000
--- a/config/dev.exs
+++ /dev/null
@@ -1,76 +0,0 @@
-import Config
-
-# Database configuration is now handled in runtime.exs
-# using DB_ADAPTER and DATABASE_URL environment variables
-config :silmataivas, Silmataivas.Repo, show_sensitive_data_on_connection_error: true
-
-# OpenWeatherMap API configuration for development
-config :silmataivas, :openweathermap_api_key, System.get_env("OPENWEATHERMAP_API_KEY")
-
-# For development, we disable any cache and enable
-# debugging and code reloading.
-#
-# The watchers configuration can be used to run external
-# watchers to your application. For example, we can use it
-# to bundle .js and .css sources.
-# Binding to loopback ipv4 address prevents access from other machines.
-config :silmataivas, SilmataivasWeb.Endpoint,
- # Change to `ip: {0, 0, 0, 0}` to allow access from other machines.
- http: [ip: {127, 0, 0, 1}, port: 4000],
- check_origin: false,
- code_reloader: true,
- debug_errors: true,
- secret_key_base: "2n9j4hR64BSG/CPD59PFf9u2obxbBtOJw2KMeJmXdQDwt4zOFyyIwWX7lamgQJhi",
- watchers: []
-
-# ## SSL Support
-#
-# In order to use HTTPS in development, a self-signed
-# certificate can be generated by running the following
-# Mix task:
-#
-# mix phx.gen.cert
-#
-# Run `mix help phx.gen.cert` for more information.
-#
-# The `http:` config above can be replaced with:
-#
-# https: [
-# port: 4001,
-# cipher_suite: :strong,
-# keyfile: "priv/cert/selfsigned_key.pem",
-# certfile: "priv/cert/selfsigned.pem"
-# ],
-#
-# If desired, both `http:` and `https:` keys can be
-# configured to run both http and https servers on
-# different ports.
-
-# Enable dev routes for dashboard and mailbox
-config :silmataivas, dev_routes: true
-
-# Do not include metadata nor timestamps in development logs
-config :logger, :console, format: "[$level] $message\n"
-
-# Set a higher stacktrace during development. Avoid configuring such
-# in production as building large stacktraces may be expensive.
-config :phoenix, :stacktrace_depth, 20
-
-# Initialize plugs at runtime for faster development compilation
-config :phoenix, :plug_init_mode, :runtime
-
-# Disable swoosh api client as it is only required for production adapters.
-config :swoosh, :api_client, Swoosh.ApiClient.Hackney
-
-config :silmataivas, Silmataivas.Mailer,
- adapter: Swoosh.Adapters.AmazonSES,
- access_key: System.get_env("AWS_ACCESS_KEY_ID"),
- secret: System.get_env("AWS_SECRET_ACCESS_KEY"),
- region: "eu-central-1"
-
-# Configure scheuler
-config :silmataivas, Silmataivas.Scheduler,
- jobs: [
- # {"0 * * * *", {Silmataivas.WeatherPoller, :check_all, []}}
- {"*/5 * * * *", {Silmataivas.WeatherPoller, :check_all, []}}
- ]
diff --git a/config/prod.exs b/config/prod.exs
deleted file mode 100644
index 07964dd..0000000
--- a/config/prod.exs
+++ /dev/null
@@ -1,14 +0,0 @@
-import Config
-
-# Configures Swoosh API Client
-# config :swoosh, api_client: Swoosh.ApiClient.Finch, finch_name: Silmataivas.Finch
-config :swoosh, :api_client, Swoosh.ApiClient.Hackney
-
-# Disable Swoosh Local Memory Storage
-config :swoosh, local: false
-
-# Do not print debug messages in production
-# config :logger, level: :info
-
-# Runtime production configuration, including reading
-# of environment variables, is done on config/runtime.exs.
diff --git a/config/runtime.exs b/config/runtime.exs
deleted file mode 100644
index a038e6f..0000000
--- a/config/runtime.exs
+++ /dev/null
@@ -1,196 +0,0 @@
-import Config
-
-# config/runtime.exs is executed for all environments, including
-# during releases. It is executed after compilation and before the
-# system starts, so it is typically used to load production configuration
-# and secrets from environment variables or elsewhere. Do not define
-# any compile-time configuration in here, as it won't be applied.
-# The block below contains prod specific runtime configuration.
-
-# ## Using releases
-#
-# If you use `mix release`, you need to explicitly enable the server
-# by passing the PHX_SERVER=true when you start it:
-#
-# PHX_SERVER=true bin/silmataivas start
-#
-# Alternatively, you can use `mix phx.gen.release` to generate a `bin/server`
-# script that automatically sets the env var above.
-if System.get_env("PHX_SERVER") do
- config :silmataivas, SilmataivasWeb.Endpoint, server: true
-end
-
-# Configure database adapter (SQLite or PostgreSQL)
-db_adapter = System.get_env("DB_ADAPTER", "sqlite")
-
-# In test environment, configure test database with sandbox pool
-if config_env() == :test do
- database_path = System.get_env("DATABASE_URL", "sqlite3:/tmp/silmataivas_test.db")
-
- config :silmataivas, Silmataivas.Repo,
- adapter: Ecto.Adapters.SQLite3,
- database: String.replace_prefix(database_path, "sqlite3:", ""),
- pool: Ecto.Adapters.SQL.Sandbox,
- pool_size: System.schedulers_online() * 2,
- queue_target: 5000,
- queue_interval: 10000,
- timeout: 30000,
- pragma: [
- # Write-Ahead Logging for better concurrency
- journal_mode: :wal,
- # Wait longer before failing on locks
- busy_timeout: 10000,
- # Balance between safety and performance
- synchronous: :normal
- ]
-else
- case db_adapter do
- "sqlite" ->
- database_path =
- System.get_env(
- "DATABASE_URL",
- "sqlite3:#{Path.join(System.get_env("HOME"), ".silmataivas.db")}"
- )
-
- config :silmataivas, Silmataivas.Repo,
- adapter: Ecto.Adapters.SQLite3,
- database: String.replace_prefix(database_path, "sqlite3:", ""),
- pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
-
- "postgres" ->
- database_url = System.get_env("DATABASE_URL")
-
- if config_env() != :prod and is_nil(database_url) do
- # Default development PostgreSQL config if DATABASE_URL is not set
- config :silmataivas, Silmataivas.Repo,
- adapter: Ecto.Adapters.Postgres,
- username: System.get_env("PGUSER", "postgres"),
- password: System.get_env("PGPASSWORD", "postgres"),
- hostname: System.get_env("PGHOST", "localhost"),
- database: System.get_env("PGDATABASE", "silmataivas_#{config_env()}"),
- pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
- else
- maybe_ipv6 = if System.get_env("ECTO_IPV6") in ~w(true 1), do: [:inet6], else: []
-
- if config_env() == :prod and is_nil(database_url) do
- raise """
- environment variable DATABASE_URL is missing.
- For example: ecto://USER:PASS@HOST/DATABASE
- """
- end
-
- config :silmataivas, Silmataivas.Repo,
- adapter: Ecto.Adapters.Postgres,
- url: database_url,
- pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10"),
- socket_options: maybe_ipv6
- end
-
- other ->
- raise "Unsupported database adapter: #{other}. Supported adapters are 'sqlite' and 'postgres'."
- end
-end
-
-if config_env() == :prod do
- # Add OpenWeatherMap API key for production
- openweathermap_api_key =
- System.get_env("OPENWEATHERMAP_API_KEY") ||
- raise """
- environment variable OPENWEATHERMAP_API_KEY is missing.
- Please set this environment variable to your OpenWeatherMap API key.
- """
-
- config :silmataivas, :openweathermap_api_key, openweathermap_api_key
-
- # The secret key base is used to sign/encrypt cookies and other secrets.
- # A default value is used in config/dev.exs and config/test.exs but you
- # want to use a different value for prod and you most likely don't want
- # to check this value into version control, so we use an environment
- # variable instead.
- secret_key_base =
- System.get_env("SECRET_KEY_BASE") ||
- raise """
- environment variable SECRET_KEY_BASE is missing.
- You can generate one by calling: mix phx.gen.secret
- """
-
- host = System.get_env("PHX_HOST") || "example.com"
- port = String.to_integer(System.get_env("PORT") || "4000")
-
- config :silmataivas, :dns_cluster_query, System.get_env("DNS_CLUSTER_QUERY")
-
- config :silmataivas, SilmataivasWeb.Endpoint,
- url: [host: host, port: 443, scheme: "https"],
- http: [
- # Enable IPv6 and bind on all interfaces.
- # Set it to {0, 0, 0, 0, 0, 0, 0, 1} for local network only access.
- # See the documentation on https://hexdocs.pm/bandit/Bandit.html#t:options/0
- # for details about using IPv6 vs IPv4 and loopback vs public addresses.
- ip: {0, 0, 0, 0},
- port: port
- ],
- secret_key_base: secret_key_base
-
- config :logger, level: String.to_atom(System.get_env("LOG_LEVEL") || "info")
-
- # ## SSL Support
- #
- # To get SSL working, you will need to add the `https` key
- # to your endpoint configuration:
- #
- # config :silmataivas, SilmataivasWeb.Endpoint,
- # https: [
- # ...,
- # port: 443,
- # cipher_suite: :strong,
- # keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
- # certfile: System.get_env("SOME_APP_SSL_CERT_PATH")
- # ]
- #
- # The `cipher_suite` is set to `:strong` to support only the
- # latest and more secure SSL ciphers. This means old browsers
- # and clients may not be supported. You can set it to
- # `:compatible` for wider support.
- #
- # `:keyfile` and `:certfile` expect an absolute path to the key
- # and cert in disk or a relative path inside priv, for example
- # "priv/ssl/server.key". For all supported SSL configuration
- # options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1
- #
- # We also recommend setting `force_ssl` in your config/prod.exs,
- # ensuring no data is ever sent via http, always redirecting to https:
- #
- # config :silmataivas, SilmataivasWeb.Endpoint,
- # force_ssl: [hsts: true]
- #
- # Check `Plug.SSL` for all available options in `force_ssl`.
-
- # ## Configuring the mailer
- #
- # In production you need to configure the mailer to use a different adapter.
- # Also, you may need to configure the Swoosh API client of your choice if you
- # are not using SMTP. Here is an example of the configuration:
- #
- # config :silmataivas, Silmataivas.Mailer,
- # adapter: Swoosh.Adapters.Mailgun,
- # api_key: System.get_env("MAILGUN_API_KEY"),
- # domain: System.get_env("MAILGUN_DOMAIN")
- #
- # For this example you need include a HTTP client required by Swoosh API client.
- # Swoosh supports Hackney and Finch out of the box:
- #
- # config :swoosh, :api_client, Swoosh.ApiClient.Hackney
- #
- # See https://hexdocs.pm/swoosh/Swoosh.html#module-installation for details.
-
- config :silmataivas, Silmataivas.Mailer,
- adapter: Swoosh.Adapters.AmazonSES,
- access_key: System.get_env("AWS_ACCESS_KEY_ID"),
- secret: System.get_env("AWS_SECRET_ACCESS_KEY"),
- region: "eu-central-1"
-
- config :silmataivas, Silmataivas.Scheduler,
- jobs: [
- {"0 * * * *", {Silmataivas.WeatherPoller, :check_all, []}}
- ]
-end
diff --git a/config/test.exs b/config/test.exs
deleted file mode 100644
index 7b5e8c3..0000000
--- a/config/test.exs
+++ /dev/null
@@ -1,26 +0,0 @@
-import Config
-
-# Database configuration is now handled in runtime.exs
-# using DB_ADAPTER and DATABASE_URL environment variables
-config :silmataivas, Silmataivas.Repo,
- pool: Ecto.Adapters.SQL.Sandbox,
- pool_size: System.schedulers_online() * 2
-
-# We don't run a server during test. If one is required,
-# you can enable the server option below.
-config :silmataivas, SilmataivasWeb.Endpoint,
- http: [ip: {127, 0, 0, 1}, port: 4002],
- secret_key_base: "QfqSXcc0rT7DLhF/zLnd5MGzXX3+NbSe46do+x4nQs9b4wlNixD0cDHJKsq/faLU",
- server: false
-
-# In test we don't send emails
-config :silmataivas, Silmataivas.Mailer, adapter: Swoosh.Adapters.Test
-
-# Disable swoosh api client as it is only required for production adapters
-config :swoosh, :api_client, false
-
-# Print only warnings and errors during test
-config :logger, level: :warning
-
-# Initialize plugs at runtime for faster test compilation
-config :phoenix, :plug_init_mode, :runtime