Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .dev/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ services:
env_file:
- ../.env.dev
expose:
- 5432:5432
- "5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
Expand Down
104 changes: 104 additions & 0 deletions lib/back/plugins/manager.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
defmodule Back.Plugins.Manager do
@moduledoc """
The Plugins.Manager context.
"""

import Ecto.Query, warn: false
alias Back.Repo

alias Back.Plugins.Manager.PluginManager

@doc """
Returns the list of plugin_manager.

## Examples

iex> list_plugin_manager()
[%PluginManager{}, ...]

"""
def list_plugin_manager do
Repo.all(PluginManager)
end

@doc """
Gets a single plugin_manager.

Raises `Ecto.NoResultsError` if the Plugin manager does not exist.

## Examples

iex> get_plugin_manager!(123)
%PluginManager{}

iex> get_plugin_manager!(456)
** (Ecto.NoResultsError)

"""
def get_plugin_manager!(id), do: Repo.get!(PluginManager, id)

@doc """
Creates a plugin_manager.

## Examples

iex> create_plugin_manager(%{field: value})
{:ok, %PluginManager{}}

iex> create_plugin_manager(%{field: bad_value})
{:error, %Ecto.Changeset{}}

"""
def create_plugin_manager(attrs \\ %{}) do
%PluginManager{}
|> PluginManager.changeset(attrs)
|> Repo.insert()
end

@doc """
Updates a plugin_manager.

## Examples

iex> update_plugin_manager(plugin_manager, %{field: new_value})
{:ok, %PluginManager{}}

iex> update_plugin_manager(plugin_manager, %{field: bad_value})
{:error, %Ecto.Changeset{}}

"""
def update_plugin_manager(%PluginManager{} = plugin_manager, attrs) do
plugin_manager
|> PluginManager.changeset(attrs)
|> Repo.update()
end

@doc """
Deletes a plugin_manager.

## Examples

iex> delete_plugin_manager(plugin_manager)
{:ok, %PluginManager{}}

iex> delete_plugin_manager(plugin_manager)
{:error, %Ecto.Changeset{}}

"""
def delete_plugin_manager(%PluginManager{} = plugin_manager) do
Repo.delete(plugin_manager)
end

@doc """
Returns an `%Ecto.Changeset{}` for tracking plugin_manager changes.

## Examples

iex> change_plugin_manager(plugin_manager)
%Ecto.Changeset{data: %PluginManager{}}

"""
def change_plugin_manager(%PluginManager{} = plugin_manager, attrs \\ %{}) do
PluginManager.changeset(plugin_manager, attrs)
end
end
20 changes: 20 additions & 0 deletions lib/back/plugins/manager/plugin_manager.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
defmodule Back.Plugins.Manager.PluginManager do
use Ecto.Schema
import Ecto.Changeset

@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id
schema "plugin_manager" do
field :automaton, :binary_id
field :visual, :binary_id

timestamps(type: :utc_datetime)
end

@doc false
def changeset(plugin_manager, attrs) do
plugin_manager
|> cast(attrs, [])
|> validate_required([])
end
end
13 changes: 11 additions & 2 deletions lib/back/users/user.ex
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ defmodule Back.Users.User do
field :email, :string
field :password, :string
field :phone, :string
field :created_at, :utc_datetime
field :created_at, :utc_datetime, default: DateTime.utc_now() |> DateTime.truncate(:second)
field :verified, :boolean, default: false
field :user_role, :string

Expand All @@ -22,7 +22,16 @@ defmodule Back.Users.User do
@doc false
def changeset(user, attrs) do
user
|> cast(attrs, [:user_id, :username, :email, :phone, :verified, :user_role, :password])
|> cast(attrs, [
:user_id,
:username,
:email,
:phone,
:verified,
:user_role,
:password,
:created_at
])
|> validate_required([:username, :email, :user_role, :password])
|> unique_constraint([:email], name: :user_email_index)
|> unique_constraint([:username], name: :user_username_index)
Expand Down
104 changes: 104 additions & 0 deletions lib/back/visuals.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
defmodule Back.Visuals do
@moduledoc """
The Visuals context.
"""

import Ecto.Query, warn: false
alias Back.Repo

alias Back.Visuals.Visual

@doc """
Returns the list of visuals.

## Examples

iex> list_visuals()
[%Visual{}, ...]

"""
def list_visuals do
Repo.all(Visual)
end

@doc """
Gets a single visual.

Raises `Ecto.NoResultsError` if the Visual does not exist.

## Examples

iex> get_visual!(123)
%Visual{}

iex> get_visual!(456)
** (Ecto.NoResultsError)

"""
def get_visual!(id), do: Repo.get!(Visual, id)

@doc """
Creates a visual.

## Examples

iex> create_visual(%{field: value})
{:ok, %Visual{}}

iex> create_visual(%{field: bad_value})
{:error, %Ecto.Changeset{}}

"""
def create_visual(attrs \\ %{}) do
%Visual{}
|> Visual.changeset(attrs)
|> Repo.insert()
end

@doc """
Updates a visual.

## Examples

iex> update_visual(visual, %{field: new_value})
{:ok, %Visual{}}

iex> update_visual(visual, %{field: bad_value})
{:error, %Ecto.Changeset{}}

"""
def update_visual(%Visual{} = visual, attrs) do
visual
|> Visual.changeset(attrs)
|> Repo.update()
end

@doc """
Deletes a visual.

## Examples

iex> delete_visual(visual)
{:ok, %Visual{}}

iex> delete_visual(visual)
{:error, %Ecto.Changeset{}}

"""
def delete_visual(%Visual{} = visual) do
Repo.delete(visual)
end

@doc """
Returns an `%Ecto.Changeset{}` for tracking visual changes.

## Examples

iex> change_visual(visual)
%Ecto.Changeset{data: %Visual{}}

"""
def change_visual(%Visual{} = visual, attrs \\ %{}) do
Visual.changeset(visual, attrs)
end
end
21 changes: 21 additions & 0 deletions lib/back/visuals/visual.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
defmodule Back.Visuals.Visual do
use Ecto.Schema
import Ecto.Changeset

@primary_key {:id, :binary_id, autogenerate: true}
schema "visuals" do
field :name, :string
field :description, :string
field :assets_link, :string
field :posted_by, :id

timestamps(type: :utc_datetime)
end

@doc false
def changeset(visual, attrs) do
visual
|> cast(attrs, [:name, :description, :assets_link])
|> validate_required([:name, :description, :assets_link])
end
end
45 changes: 45 additions & 0 deletions lib/back_web/controllers/plugin_manager_controller.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
defmodule BackWeb.PluginManagerController do
use BackWeb, :controller

alias Back.Plugins.Manager
alias Back.Plugins.Manager.PluginManager

action_fallback BackWeb.FallbackController

def index(conn, _params) do
plugin_manager = Manager.list_plugin_manager()
render(conn, :index, plugin_manager: plugin_manager)
end

def create(conn, %{"plugin_manager" => plugin_manager_params}) do
with {:ok, %PluginManager{} = plugin_manager} <-
Manager.create_plugin_manager(plugin_manager_params) do
conn
|> put_status(:created)
|> put_resp_header("location", ~p"/api/plugin_manager/#{plugin_manager}")
|> render(:show, plugin_manager: plugin_manager)
end
end

def show(conn, %{"id" => id}) do
plugin_manager = Manager.get_plugin_manager!(id)
render(conn, :show, plugin_manager: plugin_manager)
end

def update(conn, %{"id" => id, "plugin_manager" => plugin_manager_params}) do
plugin_manager = Manager.get_plugin_manager!(id)

with {:ok, %PluginManager{} = plugin_manager} <-
Manager.update_plugin_manager(plugin_manager, plugin_manager_params) do
render(conn, :show, plugin_manager: plugin_manager)
end
end

def delete(conn, %{"id" => id}) do
plugin_manager = Manager.get_plugin_manager!(id)

with {:ok, %PluginManager{}} <- Manager.delete_plugin_manager(plugin_manager) do
send_resp(conn, :no_content, "")
end
end
end
23 changes: 23 additions & 0 deletions lib/back_web/controllers/plugin_manager_json.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
defmodule BackWeb.PluginManagerJSON do
alias Back.Plugins.Manager.PluginManager

@doc """
Renders a list of plugin_manager.
"""
def index(%{plugin_manager: plugin_manager}) do
%{data: for(plugin_manager <- plugin_manager, do: data(plugin_manager))}
end

@doc """
Renders a single plugin_manager.
"""
def show(%{plugin_manager: plugin_manager}) do
%{data: data(plugin_manager)}
end

defp data(%PluginManager{} = plugin_manager) do
%{
id: plugin_manager.id
}
end
end
Loading