ratemyclient/lib/my_first_elixir_vibe_code/release.ex
Kevin Sivic 9b55c6e446
Some checks are pending
Build and Push Docker Image / build-and-push (push) Waiting to run
Fix Docker OpenSSL compatibility and deprecation warnings
- Add OpenSSL 3.x libraries to runtime stage (libcrypto3, libssl3, openssl-dev)
- Fix deprecation warning by adding parentheses to function calls in release.ex
- Resolves crypto library loading errors in Docker container

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 22:15:45 -05:00

64 lines
1.7 KiB
Elixir

defmodule MyFirstElixirVibeCode.Release do
@moduledoc """
Used for executing DB release tasks when run in production without Mix
installed.
"""
@app :my_first_elixir_vibe_code
def create_db do
load_app()
for repo <- repos() do
case repo.__adapter__().storage_up(repo.config()) do
:ok -> IO.puts("Database created for #{inspect(repo)}")
{:error, :already_up} -> IO.puts("Database already exists for #{inspect(repo)}")
{:error, term} -> IO.puts("Error creating database: #{inspect(term)}")
end
end
end
def migrate do
load_app()
for repo <- repos() do
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
end
end
def rollback(repo, version) do
load_app()
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
end
def seed_admin do
load_app()
for repo <- repos() do
{:ok, _, _} =
Ecto.Migrator.with_repo(repo, fn _repo ->
# Check if admin user already exists
case MyFirstElixirVibeCode.Repo.get_by(MyFirstElixirVibeCode.Accounts.User, username: "admin") do
nil ->
# Create admin user
MyFirstElixirVibeCode.Accounts.create_user(%{
username: "admin",
password: "admin123",
is_admin: true
})
IO.puts("Admin user created (username: admin, password: admin123)")
_user ->
IO.puts("Admin user already exists")
end
end)
end
end
defp repos do
Application.fetch_env!(@app, :ecto_repos)
end
defp load_app do
Application.load(@app)
end
end