# `GeoGenius.Published.AreaCode`
[🔗](https://github.com/agoodway/geo_genius/blob/main/lib/geo_genius/published/area_code.ex#L1)

One external code held by an area of a release, as `published_area_codes`
and its release-scoped base `release_area_codes` project it.

Read-only, and one row per code an area carries rather than the `codes` JSON
object `GeoGenius.AreaMatch` holds. Codes hang off the area rather than off a
release, and an area belongs to as many releases as carry it, so both views
stamp `release_id` on every row: it says which release the row is speaking
for, and it is the second half of any join back to
`GeoGenius.Published.Area`. Neither view carries `retired_at`, because
retirement is a property of the area.

# `t`

```elixir
@type t() :: %GeoGenius.Published.AreaCode{
  __meta__: term(),
  area_id: Ecto.UUID.t() | nil,
  area_key: String.t() | nil,
  code_type: String.t() | nil,
  code_value: String.t() | nil,
  collection_key: String.t() | nil,
  release_id: Ecto.UUID.t() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
