summaryrefslogtreecommitdiff
path: root/lib/silmataivas/locations.ex
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-03-23 17:11:39 +0100
committerDawid Rycerz <dawid@rycerz.xyz>2025-04-05 21:16:51 +0200
commit0ab2e5ba2b0631b28b5b1405559237b3913c878f (patch)
tree791cea788b0a62bc483d0041fbd0c655d2ad49e8 /lib/silmataivas/locations.ex
feat: initialize Phoenix application for weather alerts
This commit sets up the initial Silmataivas project structure, including: Phoenix web framework configuration, database models for users and locations, weather polling service, notification system, Docker and deployment configurations, CI/CD pipeline setup
Diffstat (limited to 'lib/silmataivas/locations.ex')
-rw-r--r--lib/silmataivas/locations.ex104
1 files changed, 104 insertions, 0 deletions
diff --git a/lib/silmataivas/locations.ex b/lib/silmataivas/locations.ex
new file mode 100644
index 0000000..2fc33dc
--- /dev/null
+++ b/lib/silmataivas/locations.ex
@@ -0,0 +1,104 @@
+defmodule Silmataivas.Locations do
+ @moduledoc """
+ The Locations context.
+ """
+
+ import Ecto.Query, warn: false
+ alias Silmataivas.Repo
+
+ alias Silmataivas.Locations.Location
+
+ @doc """
+ Returns the list of locations.
+
+ ## Examples
+
+ iex> list_locations()
+ [%Location{}, ...]
+
+ """
+ def list_locations do
+ Repo.all(Location)
+ end
+
+ @doc """
+ Gets a single location.
+
+ Raises `Ecto.NoResultsError` if the Location does not exist.
+
+ ## Examples
+
+ iex> get_location!(123)
+ %Location{}
+
+ iex> get_location!(456)
+ ** (Ecto.NoResultsError)
+
+ """
+ def get_location!(id), do: Repo.get!(Location, id)
+
+ @doc """
+ Creates a location.
+
+ ## Examples
+
+ iex> create_location(%{field: value})
+ {:ok, %Location{}}
+
+ iex> create_location(%{field: bad_value})
+ {:error, %Ecto.Changeset{}}
+
+ """
+ def create_location(attrs \\ %{}) do
+ %Location{}
+ |> Location.changeset(attrs)
+ |> Repo.insert()
+ end
+
+ @doc """
+ Updates a location.
+
+ ## Examples
+
+ iex> update_location(location, %{field: new_value})
+ {:ok, %Location{}}
+
+ iex> update_location(location, %{field: bad_value})
+ {:error, %Ecto.Changeset{}}
+
+ """
+ def update_location(%Location{} = location, attrs) do
+ location
+ |> Location.changeset(attrs)
+ |> Repo.update()
+ end
+
+ @doc """
+ Deletes a location.
+
+ ## Examples
+
+ iex> delete_location(location)
+ {:ok, %Location{}}
+
+ iex> delete_location(location)
+ {:error, %Ecto.Changeset{}}
+
+ """
+ def delete_location(%Location{} = location) do
+ Repo.delete(location)
+ end
+
+ @doc """
+ Returns an `%Ecto.Changeset{}` for tracking location changes.
+
+ ## Examples
+
+ iex> change_location(location)
+ %Ecto.Changeset{data: %Location{}}
+
+ """
+ def change_location(%Location{} = location, attrs \\ %{}) do
+ Location.changeset(location, attrs)
+ end
+end