PhoenixKitStaff.Schemas.Department (PhoenixKitStaff v0.3.0)

Copy Markdown View Source

Top-level organizational unit containing teams.

Translations

name and description are translatable. The primary-language values stay in the dedicated columns; secondary-language overrides live in translations (JSONB) keyed by language code, e.g.

%{"es-ES" => %{"name" => "Ingeniería", "description" => "..."}}

Reads use localized_name/2 and localized_description/2 with primary-fallback semantics: an empty / missing override returns the primary column value.

Summary

Types

t()

JSONB map of secondary-language overrides. Same shape as the projects module's translations.

Functions

Returns the department's name in the requested language. Empty / missing override falls back to the primary name column.

DB-column field names that participate in the translations JSONB.

Types

t()

@type t() :: %PhoenixKitStaff.Schemas.Department{
  __meta__: term(),
  description: String.t() | nil,
  inserted_at: DateTime.t() | nil,
  name: String.t() | nil,
  teams: [PhoenixKitStaff.Schemas.Team.t()] | Ecto.Association.NotLoaded.t(),
  translations: translations_map(),
  updated_at: DateTime.t() | nil,
  uuid: UUIDv7.t() | nil
}

translations_map()

@type translations_map() :: %{
  optional(String.t()) => %{optional(String.t()) => String.t()}
}

JSONB map of secondary-language overrides. Same shape as the projects module's translations.

Functions

changeset(dept, attrs)

@spec changeset(t() | Ecto.Changeset.t(t()), map()) :: Ecto.Changeset.t(t())

localized_description(d, lang)

@spec localized_description(t(), String.t() | nil) :: String.t() | nil

Same as localized_name/2 for description.

localized_name(d, lang)

@spec localized_name(t(), String.t() | nil) :: String.t() | nil

Returns the department's name in the requested language. Empty / missing override falls back to the primary name column.

lang may be nil (multilang disabled) — in that case the primary column is returned directly.

translatable_fields()

@spec translatable_fields() :: [String.t()]

DB-column field names that participate in the translations JSONB.