Branch
Hash :
4d8f6ed5
Author :
Thomas de Grivel
Date :
2022-11-02T18:24:08
licence
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 41 42 43 44 45 46
## kmxgit
## Copyright 2022 kmx.io <contact@kmx.io>
##
## Permission is hereby granted to use this software granted
## the above copyright notice and this permission paragraph
## are included in all copies and substantial portions of this
## software.
##
## THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
## PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
## AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
## THIS SOFTWARE.
defmodule Kmxgit.SlugManager.Slug do
use Ecto.Schema
import Ecto.Changeset
alias Kmxgit.OrganisationManager.Organisation
alias Kmxgit.UserManager.User
schema "slugs" do
field :slug, :string
belongs_to :organisation, Organisation
belongs_to :user, User
timestamps()
end
def common_changeset(changeset) do
changeset
|> validate_required([:slug])
|> validate_format(:slug, ~r/^[A-Za-z][-_+.0-9A-Za-z]{1,64}$/)
|> unique_constraint(:slug)
end
def changeset(slug, attrs \\ %{}) do
slug
|> cast(attrs, [:slug])
|> common_changeset()
end
def create_changeset(slug, attrs \\ %{}) do
slug
|> cast(attrs, [:slug, :organisation_id, :user_id])
|> common_changeset()
end
end