EMMVMNWL2OKZ66L2IK4TKQV3YMC3DU4UO4HDK4NOTEMDNSXB5WEAC endenddescribe "orgs" doalias Chklst.Accounts.Orgimport Chklst.AccountsFixtures@invalid_attrs %{name: nil, status: nil}test "list_orgs/0 returns all orgs" doorg = org_fixture()assert Accounts.list_orgs() == [org]endtest "get_org!/1 returns the org with given id" doorg = org_fixture()assert Accounts.get_org!(org.id) == orgendtest "create_org/1 with valid data creates a org" dovalid_attrs = %{name: "some name", status: :active}assert {:ok, %Org{} = org} = Accounts.create_org(valid_attrs)assert org.name == "some name"assert org.status == :activeendtest "create_org/1 with invalid data returns error changeset" doassert {:error, %Ecto.Changeset{}} = Accounts.create_org(@invalid_attrs)endtest "update_org/2 with valid data updates the org" doorg = org_fixture()update_attrs = %{name: "some updated name", status: :suspended}assert {:ok, %Org{} = org} = Accounts.update_org(org, update_attrs)assert org.name == "some updated name"assert org.status == :suspendedendtest "update_org/2 with invalid data returns error changeset" doorg = org_fixture()assert {:error, %Ecto.Changeset{}} = Accounts.update_org(org, @invalid_attrs)assert org == Accounts.get_org!(org.id)endtest "delete_org/1 deletes the org" doorg = org_fixture()assert {:ok, %Org{}} = Accounts.delete_org(org)assert_raise Ecto.NoResultsError, fn -> Accounts.get_org!(org.id) end
defmodule Chklst.Repo.Migrations.CreateUsersOrgs douse Ecto.Migrationdef change docreate table(:users_orgs, primary_key: false) doadd :user_id, references(:users, on_delete: :nothing, type: :binary_id)add :org_id, references(:orgs, on_delete: :nothing, type: :binary_id)timestamps(type: :utc_datetime)endcreate index(:users_orgs, [:user_id])create index(:users_orgs, [:org_id])create unique_index(:users_orgs, [:org_id, :user_id])endend
defmodule Chklst.Repo.Migrations.CreateOrgs douse Ecto.Migrationdef change docreate table(:orgs, primary_key: false) doadd :id, :binary_id, primary_key: trueadd :name, :stringadd :status, :stringtimestamps(type: :utc_datetime)endendend
@doc """Gets a single org.Raises `Ecto.NoResultsError` if the Org does not exist.## Examplesiex> get_org!(123)%Org{}iex> get_org!(456)** (Ecto.NoResultsError)"""def get_org!(id), do: Repo.get!(Org, id)@doc """Creates a org.## Examplesiex> create_org(%{field: value}){:ok, %Org{}}iex> create_org(%{field: bad_value}){:error, %Ecto.Changeset{}}"""def create_org(attrs \\ %{}) do%Org{}|> Org.changeset(attrs)|> Repo.insert()end@doc """Updates a org.## Examplesiex> update_org(org, %{field: new_value}){:ok, %Org{}}iex> update_org(org, %{field: bad_value}){:error, %Ecto.Changeset{}}"""def update_org(%Org{} = org, attrs) doorg|> Org.changeset(attrs)|> Repo.update()end@doc """Deletes a org.## Examplesiex> delete_org(org){:ok, %Org{}}iex> delete_org(org){:error, %Ecto.Changeset{}}"""def delete_org(%Org{} = org) doRepo.delete(org)end@doc """Returns an `%Ecto.Changeset{}` for tracking org changes.## Examplesiex> change_org(org)%Ecto.Changeset{data: %Org{}}"""def change_org(%Org{} = org, attrs \\ %{}) doOrg.changeset(org, attrs)end
defmodule Chklst.Accounts.UserOrg douse Ecto.Schemaimport Ecto.Changeset@primary_key false@foreign_key_type :binary_idschema "users_orgs" dobelongs_to :user, Chklst.Accounts.Userbelongs_to :org, Chklst.Accounts.Orgtimestamps(type: :utc_datetime)end@doc falsedef changeset(user_org, attrs) douser_org|> cast(attrs, [])|> validate_required([])endend
defmodule Chklst.Accounts.Org douse Ecto.Schemaimport Ecto.Changeset@primary_key {:id, :binary_id, autogenerate: true}@foreign_key_type :binary_idschema "orgs" dofield :name, :stringfield :status, Ecto.Enum, values: [:active, :suspended, :closed]many_to_many :users, Chklst.Accounts.User, join_through: Chklst.Accounts.UserOrgtimestamps(type: :utc_datetime)end@doc falsedef changeset(org, attrs) doorg|> cast(attrs, [:name, :status])|> validate_required([:name, :status])endend