StarlingBank.Resource behaviour (StarlingBank v1.0.0)

Copy Markdown View Source

Shared behaviour implemented by every resource struct in StarlingBank.Resources.*.

Each resource module defines a typed struct mirroring the relevant Starling JSON object, and a cast/1 function that converts a raw decoded JSON map (with camelCase string keys, as Starling returns them) into that struct (with idiomatic snake_case atom keys).

Summary

Functions

Casts an ISO8601 date-time string to a DateTime, tolerating nil/invalid input.

Casts a list of raw maps using the given resource module's cast/1.

Helper used by resource modules to camelCase-key-fetch and snake_case-assign in one step, e.g. field(map, :account_uid, "accountUid").

Callbacks

cast(map)

@callback cast(map()) :: struct()

Functions

cast_datetime(value)

@spec cast_datetime(String.t() | nil) :: DateTime.t() | nil

Casts an ISO8601 date-time string to a DateTime, tolerating nil/invalid input.

cast_list(list, module)

@spec cast_list([map()] | nil, module()) :: [struct()]

Casts a list of raw maps using the given resource module's cast/1.

field(map, json_key, default \\ nil)

@spec field(map(), String.t(), term()) :: term()

Helper used by resource modules to camelCase-key-fetch and snake_case-assign in one step, e.g. field(map, :account_uid, "accountUid").