defmodule GitGud.Organizations.TeamMembership do
use Ecto.Schema
import Ecto.Changeset
alias GitGud.Accounts.User
alias GitGud.Organizations.Team
@valid_roles ~w(member maintainer)
schema "team_memberships" do
field :role, :string, default: "member"
belongs_to :team, Team
belongs_to :user, User
timestamps(type: :utc_datetime)
end
def changeset(m, attrs) do
m
|> cast(attrs, [:team_id, :user_id, :role])
|> validate_required([:team_id, :user_id, :role])
|> validate_inclusion(:role, @valid_roles)
|> unique_constraint(:user_id, name: :team_memberships_team_id_user_id_index)
end
def valid_roles, do: @valid_roles
end
681 B · text
5af55d9