Some checks are pending
Build and Push Docker Image / build-and-push (push) Waiting to run
- 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>
64 lines
1.7 KiB
Elixir
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
|