Skip to content

streams

artpar edited this page Nov 25, 2020 · 1 revision

Streams

Streams are complimentary to actions. Think of streams as views in SQL. A stream is basically one entity + set of transformations and filters on the entity. Streams are read-only and exposed with similar semantics of that of entities. Daptin will expose JSONAPI for each stream just like it does for entities.

Here is an example of a stream which exposes list of completed todos only

{
		StreamName:     "transformed_user",
		RootEntityName: "todo",
		Columns: []api2go.ColumnInfo{          // List of columns in this stream
			{
				Name:       "transformed_todo_title",  
				ColumnType: "label",
			},
			{
				Name:       "completed_on",
				ColumnType: "datetime",
			},
		},
		QueryParams: QueryParams{
			"Filter": "completed=true",
			"Select": "title,deadline",
		},
		Transformations: []Transformation{
			{
				Operation: "select",
				Attributes: map[string]interface{}{
					"columns": []string{"title", "deadline"},
				},
			},
			{
				Operation: "rename",
				Attributes: map[string]interface{}{
					"oldName": "title",
					"newName": "transformed_todo_title",
				},
			},
			{
				Operation: "rename",
				Attributes: map[string]interface{}{
					"oldName": "deadline",
					"newName": "completed_on",
				},
			},
		},
}	

Daptin uses the library kniren/gota to systematically specific list of transformations which are applied to the original data stream.

Clone this wiki locally