summaryrefslogtreecommitdiff
path: root/lib/silmataivas/users
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/users
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/users')
-rw-r--r--lib/silmataivas/users/user.ex29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/silmataivas/users/user.ex b/lib/silmataivas/users/user.ex
new file mode 100644
index 0000000..b0746cd
--- /dev/null
+++ b/lib/silmataivas/users/user.ex
@@ -0,0 +1,29 @@
+defmodule Silmataivas.Users.User do
+ use Ecto.Schema
+ import Ecto.Changeset
+ alias Silmataivas.Repo
+
+ @roles ["user", "admin"]
+
+ schema "users" do
+ field :user_id, :string
+ field :role, :string, default: "user"
+ has_one :location, Silmataivas.Locations.Location
+ timestamps(type: :utc_datetime)
+ end
+
+ @doc false
+ def changeset(user, attrs) do
+ user
+ |> cast(attrs, [:user_id, :role])
+ |> validate_required([:user_id])
+ |> validate_inclusion(:role, @roles)
+ |> unique_constraint(:user_id)
+ end
+
+ def create_user(attrs \\ %{}) do
+ %__MODULE__{}
+ |> changeset(attrs)
+ |> Repo.insert()
+ end
+end