diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-08 11:20:35 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-01-08 11:23:28 +0000 |
| commit | 5d02ad6b893f9059044914c115d77cf9d8e589c3 (patch) | |
| tree | b727f9c44d2f2d4e203dc2344e4c9bd5144a77dd /src/nostr/policy | |
| parent | 075307804bf66bba10f5bc55cb40e2e6a98a65ee (diff) | |
refactor: replace hardcoded Kind constants with rust-nostr variants
- Replace KIND_REPOSITORY_ANNOUNCEMENT with Kind::GitRepoAnnouncement
- Replace KIND_REPOSITORY_STATE with Kind::RepoState
- Replace KIND_PR with Kind::GitPullRequest
- Replace KIND_PR_UPDATE with Kind::GitPullRequestUpdate
- Replace KIND_USER_GRASP_LIST with Kind::GitUserGraspList
- Replace KIND_PATCH with Kind::GitPatch
- Replace KIND_ISSUE with Kind::GitIssue
- Replace KIND_COMMENT with Kind::Comment
- Replace all Kind::Custom(30617|30618|1617|1618|1619|1621|1111|10317) patterns
- Remove all hardcoded KIND_* constants from events.rs
- Update all match statements to use Kind enum directly
- Update all filter builders to use Kind variants
- Update all test helpers and assertions
Benefits:
- Type safety: compiler prevents wrong kind numbers
- Readability: Kind::GitRepoAnnouncement is self-documenting
- Maintainability: single source of truth (rust-nostr)
- IDE support: full autocompletion and refactoring
- Standards: aligns with rust-nostr best practices
Files modified: 21
Constants removed: 9
Patterns replaced: 100+
Tests passing: 222/222
Diffstat (limited to 'src/nostr/policy')
| -rw-r--r-- | src/nostr/policy/announcement.rs | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/nostr/policy/announcement.rs b/src/nostr/policy/announcement.rs index 353738b..61840fb 100644 --- a/src/nostr/policy/announcement.rs +++ b/src/nostr/policy/announcement.rs | |||
| @@ -5,9 +5,7 @@ | |||
| 5 | use nostr_relay_builder::prelude::{Alphabet, Event, Filter, Kind, PublicKey, SingleLetterTag}; | 5 | use nostr_relay_builder::prelude::{Alphabet, Event, Filter, Kind, PublicKey, SingleLetterTag}; |
| 6 | 6 | ||
| 7 | use super::PolicyContext; | 7 | use super::PolicyContext; |
| 8 | use crate::nostr::events::{ | 8 | use crate::nostr::events::{validate_announcement, RepositoryAnnouncement}; |
| 9 | validate_announcement, RepositoryAnnouncement, KIND_REPOSITORY_ANNOUNCEMENT, | ||
| 10 | }; | ||
| 11 | 9 | ||
| 12 | /// Result of announcement policy evaluation | 10 | /// Result of announcement policy evaluation |
| 13 | #[derive(Debug)] | 11 | #[derive(Debug)] |
| @@ -121,12 +119,10 @@ impl AnnouncementPolicy { | |||
| 121 | author: &PublicKey, | 119 | author: &PublicKey, |
| 122 | ) -> Result<bool, String> { | 120 | ) -> Result<bool, String> { |
| 123 | // Query all announcements with this identifier that are already in the database | 121 | // Query all announcements with this identifier that are already in the database |
| 124 | let filter = Filter::new() | 122 | let filter = Filter::new().kind(Kind::GitRepoAnnouncement).custom_tag( |
| 125 | .kind(Kind::from(KIND_REPOSITORY_ANNOUNCEMENT)) | 123 | SingleLetterTag::lowercase(Alphabet::D), |
| 126 | .custom_tag( | 124 | identifier.to_string(), |
| 127 | SingleLetterTag::lowercase(Alphabet::D), | 125 | ); |
| 128 | identifier.to_string(), | ||
| 129 | ); | ||
| 130 | 126 | ||
| 131 | let announcements: Vec<Event> = match self.ctx.database.query(filter).await { | 127 | let announcements: Vec<Event> = match self.ctx.database.query(filter).await { |
| 132 | Ok(events) => events.into_iter().collect(), | 128 | Ok(events) => events.into_iter().collect(), |