Electric.Shapes.Filter (electric v1.0.15)

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{tables: term()}

Functions

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.

new(opts \\ [])

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

remove_shape(filter, shape_id)

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

Remove a shape from the filter.