DiffoExample.Nbn.Csa (DiffoExample v0.4.0)

Copy Markdown View Source

Diffo - TMF Service and Resource Management with a difference

Csa - NBN Connectivity Serving Area

A CSA is the hinterland served by a POI — the area of premises whose traffic backhauls to that interconnect. Each CSA has a boundary (a polygon) and is paired 1:1 with its POI via a PlaceRef (POI -> CSA).

A TMF675 GeographicLocation (a bounds polygon), keyed by the NBN POI Ref it is served by (e.g. "5EDW" Edwardstown). CVCs serve a CSA (#26).

The boundary is a coarse convex hull derived (and simplified) from NBN's published fixed-line coverage dataset — see DiffoExample.Nbn.Geo for the source and attribution.

An NBN Connectivity Serving Area (CSA)

Summary

Functions

Validates that the keys in the provided input are valid for at least one action on the resource.

Same as input/1, except restricts the keys to values accepted by the action provided.

Types

t()

@type t() :: %DiffoExample.Nbn.Csa{
  __lateral_join_source__: term(),
  __meta__: term(),
  __metadata__: term(),
  __order__: term(),
  accuracy: term(),
  aggregates: term(),
  bounds: term(),
  calculations: term(),
  created_at: term(),
  href: term(),
  id: term(),
  location: term(),
  name: term(),
  place_refs: term(),
  referred_type: term(),
  type: term(),
  updated_at: term()
}

Functions

default_short_name()

input(opts)

@spec input(values :: map() | Keyword.t()) :: map() | no_return()

Validates that the keys in the provided input are valid for at least one action on the resource.

Raises a KeyError error at compile time if not. This exists because generally a struct should only ever be created by Ash as a result of a successful action. You should not be creating records manually in code, e.g %MyResource{value: 1, value: 2}. Generally that is fine, but often with embedded resources it is nice to be able to validate the keys that are being provided, e.g

Resource
|> Ash.Changeset.for_create(:create, %{embedded: EmbeddedResource.input(foo: 1, bar: 2)})
|> Ash.create()

input(opts, action)

@spec input(values :: map() | Keyword.t(), action :: atom()) :: map() | no_return()

Same as input/1, except restricts the keys to values accepted by the action provided.

primary_key_matches?(left, right)