Celixir.Types.Duration (Celixir v0.3.0)

Copy Markdown View Source

CEL duration type. Stores duration as microseconds internally. Supports Go-style duration string parsing and arithmetic.

Summary

Functions

Add two durations. Returns {:ok, duration} | {:error, msg}.

Creates a duration from seconds and optional nanos.

Create duration from total nanoseconds.

Get a component of the duration.

Check if duration is within valid range.

Negate a duration.

Creates a duration from microseconds.

Parses a Go-style duration string. Supports: h, m, s, ms, us, ns suffixes. Optional negative prefix. Examples: "3600s", "1h30m", "500ms", "-1.5s", "1h2m3s4ms5us6ns"

Subtract two durations. Returns {:ok, duration} | {:error, msg}.

Convert to proto representation {seconds, nanos}.

Convert to canonical string (seconds with optional fractional nanos).

Convert duration to total nanoseconds.

Types

t()

@type t() :: %Celixir.Types.Duration{
  microseconds: integer(),
  nanos_remainder: integer()
}

Functions

add(a, b)

Add two durations. Returns {:ok, duration} | {:error, msg}.

from_seconds(seconds, nanos \\ 0)

Creates a duration from seconds and optional nanos.

from_total_nanos(total_ns)

Create duration from total nanoseconds.

get_component(duration, component)

Get a component of the duration.

in_range?(duration)

Check if duration is within valid range.

negate(duration)

Negate a duration.

new(microseconds)

Creates a duration from microseconds.

parse(str)

Parses a Go-style duration string. Supports: h, m, s, ms, us, ns suffixes. Optional negative prefix. Examples: "3600s", "1h30m", "500ms", "-1.5s", "1h2m3s4ms5us6ns"

subtract(a, b)

Subtract two durations. Returns {:ok, duration} | {:error, msg}.

to_proto(d)

Convert to proto representation {seconds, nanos}.

to_string(d)

Convert to canonical string (seconds with optional fractional nanos).

to_total_nanos(duration)

Convert duration to total nanoseconds.