2023-06-09 19:13:27 +00:00
|
|
|
defmodule Prymn.Servers do
|
|
|
|
@moduledoc """
|
|
|
|
The Servers context.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import Ecto.Query, warn: false
|
|
|
|
alias Prymn.Repo
|
|
|
|
|
|
|
|
alias Prymn.Servers.Server
|
|
|
|
|
|
|
|
@doc """
|
|
|
|
Returns the list of servers.
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
iex> list_servers()
|
|
|
|
[%Server{}, ...]
|
|
|
|
|
|
|
|
"""
|
|
|
|
def list_servers do
|
|
|
|
Repo.all(Server)
|
|
|
|
end
|
|
|
|
|
|
|
|
@doc """
|
|
|
|
Gets a single server.
|
|
|
|
|
|
|
|
Raises `Ecto.NoResultsError` if the Server does not exist.
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
iex> get_server!(123)
|
|
|
|
%Server{}
|
|
|
|
|
|
|
|
iex> get_server!(456)
|
|
|
|
** (Ecto.NoResultsError)
|
|
|
|
|
|
|
|
"""
|
|
|
|
def get_server!(id), do: Repo.get!(Server, id)
|
|
|
|
|
|
|
|
@doc """
|
|
|
|
Creates a server.
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
iex> create_server(%{field: value})
|
|
|
|
{:ok, %Server{}}
|
|
|
|
|
|
|
|
iex> create_server(%{field: bad_value})
|
|
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
|
|
|
|
"""
|
|
|
|
def create_server(attrs \\ %{}) do
|
2023-06-19 20:28:24 +00:00
|
|
|
# FIXME: Maybe use a cryptographically secure token (if UUID v4 is not one)?
|
|
|
|
%Server{connection_token: Ecto.UUID.generate()}
|
2023-06-09 19:13:27 +00:00
|
|
|
|> Server.changeset(attrs)
|
|
|
|
|> Repo.insert()
|
|
|
|
end
|
|
|
|
|
|
|
|
@doc """
|
|
|
|
Updates a server.
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
iex> update_server(server, %{field: new_value})
|
|
|
|
{:ok, %Server{}}
|
|
|
|
|
|
|
|
iex> update_server(server, %{field: bad_value})
|
|
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
|
|
|
|
"""
|
|
|
|
def update_server(%Server{} = server, attrs) do
|
|
|
|
server
|
|
|
|
|> Server.changeset(attrs)
|
|
|
|
|> Repo.update()
|
|
|
|
end
|
|
|
|
|
|
|
|
@doc """
|
|
|
|
Deletes a server.
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
iex> delete_server(server)
|
|
|
|
{:ok, %Server{}}
|
|
|
|
|
|
|
|
iex> delete_server(server)
|
|
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
|
|
|
|
"""
|
|
|
|
def delete_server(%Server{} = server) do
|
|
|
|
Repo.delete(server)
|
|
|
|
end
|
|
|
|
|
|
|
|
@doc """
|
|
|
|
Returns an `%Ecto.Changeset{}` for tracking server changes.
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
iex> change_server(server)
|
|
|
|
%Ecto.Changeset{data: %Server{}}
|
|
|
|
|
|
|
|
"""
|
|
|
|
def change_server(%Server{} = server, attrs \\ %{}) do
|
|
|
|
Server.changeset(server, attrs)
|
|
|
|
end
|
|
|
|
end
|