Hash :
25717797
Author :
Thomas de Grivel
Date :
2021-12-10T09:42:59
sort repositories
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
defmodule Kmxgit.OrganisationManager.Organisation do
use Ecto.Schema
import Ecto.Changeset
alias Kmxgit.RepositoryManager.Repository
alias Kmxgit.SlugManager.Slug
alias Kmxgit.UserManager.User
schema "organisations" do
field :description, :string
field :name, :string
has_many :owned_repositories, Repository
many_to_many :users, User, join_through: "users_organisations", on_replace: :delete, on_delete: :delete_all
has_one :slug, Slug, on_delete: :delete_all
timestamps()
end
@doc false
def changeset(organisation, attrs \\ %{}) do
organisation
|> cast(attrs, [:description, :name])
|> cast_assoc(:slug)
|> validate_required([:slug])
|> Markdown.validate_markdown(:description)
|> foreign_key_constraint(:owned_repositories, name: :repositories_organisation_id_fkey)
end
def owner?(org, user) do
org.users
|> Enum.find(fn u ->
u.id == user.id
end)
end
def owned_repositories(org) do
org.owned_repositories
|> Enum.sort_by(&Repository.full_slug/1)
end
end