utils
utils
¶
DVM service utility functions.
Pure helpers for NIP-90 event parsing and event builder construction.
All functions are stateless — they build EventBuilder instances or
parse event data without touching the network or database.
Classes¶
Functions¶
parse_job_params
¶
Extract NIP-90 parameters from event tags.
Reads ["param", key, value] tags and an optional ["bid", amount]
tag from the event. Invalid bid values are silently ignored.
Parameters:
-
event(Any) –A
nostr_sdk.Event(or mock with.tags().to_vec()).
Returns:
-
dict[str, Any]–Dict mapping parameter names to their string values, plus an
-
dict[str, Any]–optional
"bid"key with an integer value.
Source code in src/bigbrotr/services/dvm/utils.py
parse_query_filters
¶
Parse a comma-separated filter string into a dict.
Format: "column=value,column=op:value" where op is one of
=, >, <, >=, <=, ILIKE.
Parameters:
-
filter_str(str) –Raw filter string from a NIP-90
paramtag.
Returns:
-
dict[str, str] | None–Dict of column→value pairs, or
Noneif empty or unparsable.
Source code in src/bigbrotr/services/dvm/utils.py
build_result_event
¶
build_result_event(
request_kind: int,
request_event_id: str,
customer_pubkey: str,
result: QueryResult,
price: int,
) -> EventBuilder
Build a NIP-90 job result event (request kind + 1000).
Parameters:
-
request_kind(int) –The NIP-90 request kind (e.g. 5050).
-
request_event_id(str) –Hex ID of the request event.
-
customer_pubkey(str) –Hex pubkey of the requesting user.
-
result(QueryResult) –Query result to serialize as JSON content.
-
price(int) –Millisat price (included as
amounttag if > 0).
Returns:
-
EventBuilder–Unsigned
EventBuilderready for signing and sending.
Source code in src/bigbrotr/services/dvm/utils.py
build_error_event
¶
build_error_event(
request_event_id: str,
customer_pubkey: str,
error_message: str,
) -> EventBuilder
Build a NIP-90 error feedback event (kind 7000).
Parameters:
-
request_event_id(str) –Hex ID of the request event.
-
customer_pubkey(str) –Hex pubkey of the requesting user.
-
error_message(str) –Human-readable error description.
Returns:
-
EventBuilder–Unsigned
EventBuilderready for signing and sending.
Source code in src/bigbrotr/services/dvm/utils.py
build_payment_required_event
¶
build_payment_required_event(
request_event_id: str, customer_pubkey: str, price: int
) -> EventBuilder
Build a NIP-90 payment-required feedback event (kind 7000).
Parameters:
-
request_event_id(str) –Hex ID of the request event.
-
customer_pubkey(str) –Hex pubkey of the requesting user.
-
price(int) –Required payment in millisats.
Returns:
-
EventBuilder–Unsigned
EventBuilderready for signing and sending.
Source code in src/bigbrotr/services/dvm/utils.py
build_announcement_event
¶
build_announcement_event(
d_tag: str,
kind: int,
name: str,
about: str,
tables: list[str],
) -> EventBuilder
Build a NIP-89 handler announcement event (kind 31990).
Parameters:
-
d_tag(str) –Unique handler identifier for the replaceable event.
-
kind(int) –NIP-90 request kind this handler supports.
-
name(str) –Human-readable handler name.
-
about(str) –Handler description.
-
tables(list[str]) –List of enabled table names.
Returns:
-
EventBuilder–Unsigned
EventBuilderready for signing and sending.