From 50ce8cb96b2b218751c2fc2a6b19372f51846acc Mon Sep 17 00:00:00 2001 From: Dawid Rycerz Date: Mon, 14 Jul 2025 19:34:59 +0300 Subject: feat: rewrite in rust --- lib/silmataivas/release.ex | 136 --------------------------------------------- 1 file changed, 136 deletions(-) delete mode 100644 lib/silmataivas/release.ex (limited to 'lib/silmataivas/release.ex') diff --git a/lib/silmataivas/release.ex b/lib/silmataivas/release.ex deleted file mode 100644 index 4fc9e93..0000000 --- a/lib/silmataivas/release.ex +++ /dev/null @@ -1,136 +0,0 @@ -defmodule Silmataivas.Release do - @moduledoc """ - Release tasks for Silmataivas application. - - This module provides functions to run Ecto migrations in a - compiled release, supporting both SQLite and PostgreSQL backends. - """ - - @app :silmataivas - - @doc """ - Creates a new user with optional user ID and role. - - ## Parameters - * `user_id` - An optional user ID to use. If not provided, a UUID will be generated. - * `role` - An optional role, must be either "user" or "admin". Defaults to "user". - - ## Examples - Silmataivas.Release.new_user() - Silmataivas.Release.new_user("custom_user_id") - Silmataivas.Release.new_user("custom_user_id", "admin") - """ - def new_user(user_id \\ nil, role \\ "user") do - # Create the new user - load_app() - start_repos() - - # Validate role - unless role in ["user", "admin"] do - IO.puts("\n❌ Invalid role: #{role}. Role must be either \"user\" or \"admin\".") - exit({:shutdown, 1}) - end - - user_id = user_id || Ecto.UUID.generate() - user_params = %{user_id: user_id, role: role} - - case Silmataivas.Users.create_user(user_params) do - {:ok, user} -> - IO.puts("\n✅ User created successfully!") - IO.puts(" User ID (API token): #{user.user_id}") - IO.puts(" Role: #{user.role}") - - {:error, changeset} -> - IO.puts("\n❌ Failed to create user:") - IO.inspect(changeset.errors) - 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 create_db do - load_app() - - for repo <- repos() do - # Create the database if it doesn't exist - adapter = get_repo_adapter(repo) - - case adapter.storage_up(repo.config()) do - :ok -> - IO.puts("Database for #{inspect(repo)} created successfully") - - {:error, :already_up} -> - IO.puts("Database for #{inspect(repo)} already exists") - - {:error, reason} -> - IO.warn("Database for #{inspect(repo)} failed to create: #{inspect(reason)}") - end - end - end - - def setup do - # Create the database and then run migrations - create_db() - migrate() - end - - def db_info do - load_app() - - for repo <- repos() do - adapter = get_repo_adapter(repo) - config = repo.config() - - IO.puts("Repository: #{inspect(repo)}") - IO.puts("Adapter: #{inspect(adapter)}") - - case adapter do - Ecto.Adapters.SQLite3 -> - db_path = config[:database] || "default.db" - IO.puts("Database path: #{db_path}") - - Ecto.Adapters.Postgres -> - hostname = config[:hostname] || "localhost" - database = config[:database] || "default" - IO.puts("Host: #{hostname}, Database: #{database}") - - _ -> - IO.puts("Config: #{inspect(config)}") - end - - IO.puts("---") - end - end - - defp get_repo_adapter(repo) do - repo.config()[:adapter] - end - - defp start_repos do - {:ok, _} = Application.ensure_all_started(:ecto_sql) - - for repo <- repos() do - {:ok, _} = repo.start_link(pool_size: 2) - end - end - - defp repos do - Application.fetch_env!(@app, :ecto_repos) - end - - defp load_app do - Application.load(@app) - end -end -- cgit v1.2.3