Adds basic events to the seacheable interface

This commit is contained in:
Vitor Pamplona
2025-07-27 16:25:09 -04:00
parent dc68d6025e
commit d5bbf4b00b
10 changed files with 49 additions and 10 deletions
@@ -47,6 +47,7 @@ import com.vitorpamplona.quartz.nip19Bech32.eventIds
import com.vitorpamplona.quartz.nip19Bech32.pubKeyHints
import com.vitorpamplona.quartz.nip19Bech32.pubKeys
import com.vitorpamplona.quartz.nip31Alts.alt
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.utils.TimeUtils
@Immutable
@@ -60,7 +61,10 @@ class PollNoteEvent(
) : BaseThreadedEvent(id, pubKey, createdAt, KIND, tags, content, sig),
EventHintProvider,
AddressHintProvider,
PubKeyHintProvider {
PubKeyHintProvider,
SearchableEvent {
override fun indexableContent() = content + pollOptionsArray().map { "\nOption: " + it.descriptor }
override fun eventHints(): List<EventIdHint> {
val eHints = tags.mapNotNull(MarkedETag::parseAsHint)
val qHints = tags.mapNotNull(QTag::parseEventAsHint)
@@ -45,6 +45,8 @@ open class Event(
*/
open fun isContentEncoded() = false
open fun extraIndexableTagNames() = emptySet<String>()
open fun countMemory(): Long =
7 * pointerSizeInBytes + // 7 fields, 4 bytes each reference (32bit)
12L + // createdAt + kind
@@ -36,6 +36,7 @@ import com.vitorpamplona.quartz.nip01Core.tags.people.PTag
import com.vitorpamplona.quartz.nip10Notes.tags.MarkedETag
import com.vitorpamplona.quartz.nip10Notes.tags.markedETags
import com.vitorpamplona.quartz.nip10Notes.tags.prepareETagsAsReplyTo
import com.vitorpamplona.quartz.nip14Subject.subject
import com.vitorpamplona.quartz.nip18Reposts.quotes.QTag
import com.vitorpamplona.quartz.nip19Bech32.addressHints
import com.vitorpamplona.quartz.nip19Bech32.addressIds
@@ -44,6 +45,7 @@ import com.vitorpamplona.quartz.nip19Bech32.eventIds
import com.vitorpamplona.quartz.nip19Bech32.pubKeyHints
import com.vitorpamplona.quartz.nip19Bech32.pubKeys
import com.vitorpamplona.quartz.nip31Alts.alt
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.utils.TimeUtils
@Immutable
@@ -57,7 +59,10 @@ class TextNoteEvent(
) : BaseThreadedEvent(id, pubKey, createdAt, KIND, tags, content, sig),
EventHintProvider,
AddressHintProvider,
PubKeyHintProvider {
PubKeyHintProvider,
SearchableEvent {
override fun indexableContent() = "Subject: " + subject() + "\n" + content
override fun eventHints(): List<EventIdHint> {
val eHints = tags.mapNotNull(MarkedETag::parseAsHint)
val qHints = tags.mapNotNull(QTag::parseEventAsHint)
@@ -108,7 +113,7 @@ class TextNoteEvent(
const val KIND = 1
const val ALT = "A short note: "
fun shortedMessageForAlt(msg: String): String {
private fun shortedMessageForAlt(msg: String): String {
if (msg.length < 50) return ALT + msg
return ALT + msg.take(50) + "..."
}
@@ -54,6 +54,7 @@ import com.vitorpamplona.quartz.nip22Comments.tags.RootEventTag
import com.vitorpamplona.quartz.nip22Comments.tags.RootIdentifierTag
import com.vitorpamplona.quartz.nip22Comments.tags.RootKindTag
import com.vitorpamplona.quartz.nip31Alts.alt
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.nip73ExternalIds.ExternalId
import com.vitorpamplona.quartz.nip73ExternalIds.location.GeohashId
import com.vitorpamplona.quartz.utils.TimeUtils
@@ -71,7 +72,10 @@ class CommentEvent(
RootScope,
EventHintProvider,
PubKeyHintProvider,
AddressHintProvider {
AddressHintProvider,
SearchableEvent {
override fun indexableContent() = content
override fun pubKeyHints(): List<PubKeyHint> {
val pHints =
tags.mapNotNull(RootAuthorTag::parseAsHint) +
@@ -51,6 +51,7 @@ import com.vitorpamplona.quartz.nip23LongContent.tags.PublishedAtTag
import com.vitorpamplona.quartz.nip23LongContent.tags.SummaryTag
import com.vitorpamplona.quartz.nip23LongContent.tags.TitleTag
import com.vitorpamplona.quartz.nip31Alts.alt
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.utils.TimeUtils
import java.util.UUID
@@ -67,7 +68,10 @@ class LongTextNoteEvent(
EventHintProvider,
PubKeyHintProvider,
AddressHintProvider,
RootScope {
RootScope,
SearchableEvent {
override fun indexableContent() = "title: " + title() + "\nsummary: " + summary() + "\n" + content
override fun eventHints(): List<EventIdHint> {
val qHints = tags.mapNotNull(QTag::parseEventAsHint)
val nip19Hints = citedNIP19().eventHints()
@@ -50,6 +50,7 @@ import com.vitorpamplona.quartz.nip28PublicChat.base.IsInPublicChatChannel
import com.vitorpamplona.quartz.nip28PublicChat.base.channel
import com.vitorpamplona.quartz.nip28PublicChat.base.reply
import com.vitorpamplona.quartz.nip37Drafts.ExposeInDraft
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.utils.TimeUtils
@Immutable
@@ -65,7 +66,10 @@ class ChannelMessageEvent(
ExposeInDraft,
EventHintProvider,
AddressHintProvider,
PubKeyHintProvider {
PubKeyHintProvider,
SearchableEvent {
override fun indexableContent() = content
override fun eventHints(): List<EventIdHint> {
val eHints = tags.mapNotNull(MarkedETag::parseAsHint)
val qHints = tags.mapNotNull(QTag::parseEventAsHint)
@@ -45,6 +45,7 @@ import com.vitorpamplona.quartz.nip19Bech32.pubKeyHints
import com.vitorpamplona.quartz.nip19Bech32.pubKeys
import com.vitorpamplona.quartz.nip31Alts.alt
import com.vitorpamplona.quartz.nip34Git.repository.GitRepositoryEvent
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.utils.TimeUtils
@Immutable
@@ -58,7 +59,10 @@ class GitIssueEvent(
) : BaseThreadedEvent(id, pubKey, createdAt, KIND, tags, content, sig),
PubKeyHintProvider,
EventHintProvider,
AddressHintProvider {
AddressHintProvider,
SearchableEvent {
override fun indexableContent() = "Subject: " + subject() + "\n" + content
override fun eventHints(): List<EventIdHint> {
val qHints = tags.mapNotNull(QTag::parseEventAsHint)
val nip19Hints = citedNIP19().eventHints()
@@ -46,6 +46,7 @@ import com.vitorpamplona.quartz.nip19Bech32.eventIds
import com.vitorpamplona.quartz.nip19Bech32.pubKeyHints
import com.vitorpamplona.quartz.nip19Bech32.pubKeys
import com.vitorpamplona.quartz.nip37Drafts.ExposeInDraft
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.nip53LiveActivities.streaming.LiveActivitiesEvent
import com.vitorpamplona.quartz.utils.TimeUtils
@@ -61,7 +62,10 @@ class LiveActivitiesChatMessageEvent(
EventHintProvider,
PubKeyHintProvider,
AddressHintProvider,
ExposeInDraft {
ExposeInDraft,
SearchableEvent {
override fun indexableContent() = content
override fun eventHints(): List<EventIdHint> {
val eHints = tags.mapNotNull(ETag::parseAsHint)
val qHints = tags.mapNotNull(QTag::parseEventAsHint)
@@ -46,6 +46,7 @@ import com.vitorpamplona.quartz.nip19Bech32.eventIds
import com.vitorpamplona.quartz.nip19Bech32.pubKeyHints
import com.vitorpamplona.quartz.nip19Bech32.pubKeys
import com.vitorpamplona.quartz.nip31Alts.AltTag
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.utils.TimeUtils
@Immutable
@@ -60,7 +61,10 @@ class WikiNoteEvent(
AddressableEvent,
EventHintProvider,
AddressHintProvider,
PubKeyHintProvider {
PubKeyHintProvider,
SearchableEvent {
override fun indexableContent() = "title: " + title() + "\nsummary: " + summary() + "\n" + content
override fun eventHints(): List<EventIdHint> {
val eHints = tags.mapNotNull(MarkedETag::parseAsHint)
val qHints = tags.mapNotNull(QTag::parseEventAsHint)
@@ -47,6 +47,7 @@ import com.vitorpamplona.quartz.nip19Bech32.pubKeyHints
import com.vitorpamplona.quartz.nip19Bech32.pubKeys
import com.vitorpamplona.quartz.nip22Comments.RootScope
import com.vitorpamplona.quartz.nip31Alts.AltTag
import com.vitorpamplona.quartz.nip50Search.SearchableEvent
import com.vitorpamplona.quartz.nip84Highlights.tags.CommentTag
import com.vitorpamplona.quartz.nip84Highlights.tags.ContextTag
import com.vitorpamplona.quartz.utils.TimeUtils
@@ -63,7 +64,10 @@ class HighlightEvent(
RootScope,
EventHintProvider,
AddressHintProvider,
PubKeyHintProvider {
PubKeyHintProvider,
SearchableEvent {
override fun indexableContent() = "comment: " + comment() + "\ncontext: " + context() + "\n" + content
override fun eventHints(): List<EventIdHint> {
val eHints = tags.mapNotNull(ETag::parseAsHint)
val qHints = tags.mapNotNull(QTag::parseEventAsHint)