74 lines
2.7 KiB
TypeScript
74 lines
2.7 KiB
TypeScript
/**
|
|
* Helper functions for caching synced events
|
|
* Centralizes the logic for caching purchases, sponsoring, review tips, and payment notes
|
|
*/
|
|
|
|
import type { Event } from 'nostr-tools'
|
|
import { extractTagsFromEvent } from '../nostrTagSystem'
|
|
import { extractPurchaseFromEvent, extractSponsoringFromEvent, extractReviewTipFromEvent } from '../metadataExtractor'
|
|
|
|
export async function cachePurchases(events: Event[]): Promise<void> {
|
|
const { writeService } = await import('../writeService')
|
|
const { parsePurchaseFromEvent } = await import('../nostrEventParsing')
|
|
for (const event of events) {
|
|
const extracted = await extractPurchaseFromEvent(event)
|
|
if (extracted) {
|
|
const purchase = await parsePurchaseFromEvent(event)
|
|
if (purchase) {
|
|
const purchaseTyped = purchase
|
|
if (purchaseTyped.hash) {
|
|
await writeService.writeObject('purchase', purchaseTyped.hash, event, purchaseTyped, 0, false, purchaseTyped.index ?? 0, false)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function cacheSponsoring(events: Event[]): Promise<void> {
|
|
const { writeService } = await import('../writeService')
|
|
const { parseSponsoringFromEvent } = await import('../nostrEventParsing')
|
|
for (const event of events) {
|
|
const extracted = await extractSponsoringFromEvent(event)
|
|
if (extracted) {
|
|
const sponsoring = await parseSponsoringFromEvent(event)
|
|
if (sponsoring) {
|
|
const sponsoringTyped = sponsoring
|
|
if (sponsoringTyped.hash) {
|
|
await writeService.writeObject('sponsoring', sponsoringTyped.hash, event, sponsoringTyped, 0, false, sponsoringTyped.index ?? 0, false)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function cacheReviewTips(events: Event[]): Promise<void> {
|
|
const { writeService } = await import('../writeService')
|
|
const { parseReviewTipFromEvent } = await import('../nostrEventParsing')
|
|
for (const event of events) {
|
|
const extracted = await extractReviewTipFromEvent(event)
|
|
if (extracted) {
|
|
const reviewTip = await parseReviewTipFromEvent(event)
|
|
if (reviewTip) {
|
|
const reviewTipTyped = reviewTip
|
|
if (reviewTipTyped.hash) {
|
|
await writeService.writeObject('review_tip', reviewTipTyped.hash, event, reviewTipTyped, 0, false, reviewTipTyped.index ?? 0, false)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function cachePaymentNotes(events: Event[]): Promise<void> {
|
|
const { writeService } = await import('../writeService')
|
|
for (const event of events) {
|
|
const tags = extractTagsFromEvent(event)
|
|
if (tags.type === 'payment' && tags.payment) {
|
|
await writeService.writeObject('payment_note', event.id, event, {
|
|
id: event.id,
|
|
type: 'payment_note',
|
|
eventId: event.id,
|
|
}, 0, false, 0, false)
|
|
}
|
|
}
|
|
}
|