Electric.Shapes.Filter (electric v1.2.4)

View Source

Responsible for knowing which shapes are affected by a change.

affected_shapes(filter, change) will return a set of IDs for the shapes that are affected by the change considering all the shapes that have been added to the filter using add_shape/3.

The Filter module keeps track of what tables are referenced by the shapes and changes and delegates the table specific logic to the Filter.WhereCondition module.

Summary

Functions

Add a shape for the filter to track.

Returns the shape IDs for all shapes that have been added to the filter that are affected by the given change.

Remove a shape from the filter.

Types

shape_id()

@type shape_id() :: any()

t()

@type t() :: %Electric.Shapes.Filter{refs_fun: term(), shapes: term(), tables: term()}

Functions

active_shapes(filter)

@spec active_shapes(t()) :: [shape_id()]

add_shape(filter, shape_id, shape)

@spec add_shape(t(), shape_id(), Electric.Shapes.Shape.t()) :: t()

Add a shape for the filter to track.

The shape_id can be any term you like to identify the shape. Whatever you use will be returned by affected_shapes/2 when the shape is affected by a change.

affected_shapes(filter, change)

Returns the shape IDs for all shapes that have been added to the filter that are affected by the given change.

has_shape?(filter, shape_handle)

@spec has_shape?(t(), shape_id()) :: boolean()

new(opts \\ [])

@spec new(keyword()) :: t()

remove_shape(filter, shape_id)

@spec remove_shape(t(), shape_id()) :: t()

Remove a shape from the filter.