Repository navigation
Releases: DevinMB/data-sinks
Release list
Update sink keying
Replace _DocFormatter with str.format for custom ID template rendering _DocFormatter was silently producing empty entity_id renders in the Alpine Python environment, causing every message to fall through to auto-id. Plain str.format(**builtins) is simpler and guaranteed correct for flat top-level field tokens. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
.
merge commits
Refactor couchdb-sink: add nested ID template support and helpers
- Add _DocFormatter for {doc.x.y.z} nested field traversal in custom ID templates
- Add get_nested() for dotted-path resolution against dicts
- Add sanitize_id_segment() to strip '/' from CouchDB _ids
- Extend compute_doc_id custom mode with last_updated, last_changed, entity_id tokens
- Update field mode to support dotted paths (e.g. "context.id")
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix
The current custom template only supports {chat_id}, {int_ts}, {ts}, and {key}, all of which assume a Telegram-shaped message. For Home Assistant apache_kafka messages (and likely other sources), there's no top-level timestamp field — the time lives in last_updated / last_changed, and unique IDs live nested at context.id.
This change:
Adds {last_updated}, {last_changed}, and {entity_id} as first-class tokens.
Adds dotted-path resolution to field mode so COUCHDB_ID_FIELD=context.id works.
Adds a generic {doc.path.to.field} escape hatch in custom templates so users can reference any nested field without further code changes.
Sanitizes characters in template values that would break CouchDB _ids (specifically /).
Fully backward-compatible — existing templates and modes behave identically.
better keying
The current custom template only supports {chat_id}, {int_ts}, {ts}, and {key}, all of which assume a Telegram-shaped message. For Home Assistant apache_kafka messages (and likely other sources), there's no top-level timestamp field — the time lives in last_updated / last_changed, and unique IDs live nested at context.id.
This change:
Adds {last_updated}, {last_changed}, and {entity_id} as first-class tokens.
Adds dotted-path resolution to field mode so COUCHDB_ID_FIELD=context.id works.
Adds a generic {doc.path.to.field} escape hatch in custom templates so users can reference any nested field without further code changes.
Sanitizes characters in template values that would break CouchDB _ids (specifically /).
Fully backward-compatible — existing templates and modes behave identically.
v1.2.1
v1.2.0
Filter Functionality
Minor fix
Filters and Commit settings
v1.0.3 filter logic and auto commit setting