fix(nostrrelay): populate size field for event storage accounting
Changes: - relay/event.py: Add `size: int = 0` field to NostrEvent model - relay/client_connection.py: Set `event.size = event.size_bytes` when creating events from WebSocket messages The size field has existed in the database schema since migration m001 but was never populated, causing: - Incorrect storage accounting (always 0) - Broken storage quota enforcement - Failed event pruning when storage limits reached The size field is internal relay metadata and is excluded from the nostr_dict() output, maintaining NIP-01 compliance. The size_bytes property calculates the actual byte size of the event's JSON representation. Fixes: Database constraint violation when inserting events without the required size column value. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
8d6f482de0
commit
b74af2628e
2 changed files with 3 additions and 0 deletions
|
|
@ -121,6 +121,8 @@ class NostrClientConnection:
|
||||||
}
|
}
|
||||||
|
|
||||||
event = NostrEvent(**event_dict)
|
event = NostrEvent(**event_dict)
|
||||||
|
# Set the size field from the size_bytes property
|
||||||
|
event.size = event.size_bytes
|
||||||
await self._handle_event(event)
|
await self._handle_event(event)
|
||||||
return []
|
return []
|
||||||
if message_type == NostrEventType.REQ:
|
if message_type == NostrEventType.REQ:
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ class NostrEvent(BaseModel):
|
||||||
tags: list[list[str]] = Field(default=[], no_database=True)
|
tags: list[list[str]] = Field(default=[], no_database=True)
|
||||||
content: str = ""
|
content: str = ""
|
||||||
sig: str
|
sig: str
|
||||||
|
size: int = 0
|
||||||
|
|
||||||
def nostr_dict(self) -> dict:
|
def nostr_dict(self) -> dict:
|
||||||
_nostr_dict = dict(self)
|
_nostr_dict = dict(self)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue