Skip to main content

Source - ClockSourceBuilder

Source.ClockSourceBuilder

A helper class to build a data

Source, which populates a data Stream with data. Data sources can range from simple clocks to complex database queries or API requests.

A corresponding

Template can be created using .toTemplate().

Remarks

See

Ingest Structured Data for a related learning module.

Type parameters

NameType
Textends EastType
Inputsextends Record

Hierarchy

  • AbstractSourceBuilder

    ClockSourceBuilder

Source

error

error(config):

ClockSourceBuilder

Check the source outputs for validity and identify any errors. When the if predicate returns true the source will be terminated with an error message and output data will not be produced.

Parameters

NameTypeDescription
configObjectthe error message and predicate
config.if(value: Variable, inputs: Inputs) => EastFunctionIf true an error will be created
config.messagestring | (value: Variable, inputs: Inputs) => EastFunctionThe message in the case that an error is created

Returns

ClockSourceBuilder

a new

SourceBuilder

Example

 const source = new SourceBuilder("FloatSource")
.input({ name: "max", stream: max_stream })
.writeable(FloatType)
.error({
if: (value, { max }) => Greater(value, max),
message: (value) => StringJoin`The value ${value} exceeds maximum`
})

Inherited from

AbstractSourceBuilder.error


input

input(config):

ClockSourceBuilder<T, Inputs & { [K in string]: Variable }>

Add a stream as input to the SourceBuilder, which can be used in expressions to configure how the

Source will access the data (such as a URL or password), the output data, or any data assertions (preconditions and postconditions).

Type parameters

NameType
Nameextends string
Sextends EastType

Parameters

NameTypeDescription
configObjectthe configuration for the input
config.nameName extends "input" | keyof Inputs ? never : Namethe name to give the input Variable
config.streamStreamthe input stream (the stream and associated preconditions)

Returns

ClockSourceBuilder<T, Inputs & { [K in string]: Variable }>

a new

SourceBuilder

Example

 const other = Stream("Other", FloatType)
const source = new SourceBuilder("Source")
.input({ name: "other", stream: other })
.clock({ cron: "0 * * * *" })
.toSource()

log

log(config):

ClockSourceBuilder

Produce log messages based on the source outputs and inputs. When the if predicate returns true source will register a warning with a message, but will proceed to proceed to produce output data.

Parameters

NameTypeDescription
configObjectthe log message and optional predicate
config.if?(value: Variable, inputs: Inputs) => EastFunctionIf true a log message will be produced (optional)
config.messagestring | (value: Variable, inputs: Inputs) => EastFunctionThe message in the case that a warning is created

Returns

ClockSourceBuilder

a new

SourceBuilder

Example

 const source = new SourceBuilder("FloatSource")
.input({ name: "max", stream: max_stream })
.writeable(FloatType)
.log({
if: (value, { max }) => Greater(value, max),
message: (value) => StringJoin`The value ${value} exceeds maximum`
})

Inherited from

AbstractSourceBuilder.log


outputStream

outputStream():

Stream

Return the

Stream containing the output of the datasource.

Returns

Stream

Example

// Create a datastream which is updated to the current time at the beginning of every hour
const hourly = new SourceBuilder("Hourly")
.clock({ cron: "0 * * * *" })
.outputStream()

Overrides

AbstractSourceBuilder.outputStream


toTemplate

toTemplate():

Template

Return a

Template fragment containing the Streams and TaskDescriptions built by this builder.

Returns

Template

Example

// Create a datastream which is updated to the current time at the beginning of every hour
export default new SourceBuilder("Hourly")
.clock({ cron: "0 * * * *" })
.toTemplate()

Overrides

AbstractSourceBuilder.toTemplate


warn

warn(config):

ClockSourceBuilder

Check the source outputs for validity and produce warnings as necessary. When the if predicate returns true the source will register a warning with a message, but will proceed to proceed to produce output data.

Parameters

NameTypeDescription
configObjectthe warning message and predicate
config.if(value: Variable, inputs: Inputs) => EastFunctionIf true a warning will be produced
config.messagestring | (value: Variable, inputs: Inputs) => EastFunctionThe message in the case that a warning is created

Returns

ClockSourceBuilder

a new

SourceBuilder

Example

 const source = new SourceBuilder("FloatSource")
.input({ name: "max", stream: max_stream })
.writeable(FloatType)
.warn({
if: (value, { max }) => Greater(value, max),
message: (value) => StringJoin`The value ${value} exceeds maximum`
})

Inherited from

AbstractSourceBuilder.warn