refactor: zap amount parsed with zod, change zapped_by fields name
This commit is contained in:
parent
7474c1b288
commit
22dbddb5d3
|
@ -545,6 +545,7 @@ const zapController: AppController = async (c) => {
|
|||
const zappedByController: AppController = async (c) => {
|
||||
const id = c.req.param('id');
|
||||
const store = await Storages.db();
|
||||
const amountSchema = z.coerce.number().int().nonnegative().catch(0);
|
||||
|
||||
const events: DittoEvent[] = (await store.query([{ kinds: [9735], '#e': [id], limit: 100 }])).map((event) => {
|
||||
const zapRequest = event.tags.find(([name]) => name === 'description')?.[1];
|
||||
|
@ -560,17 +561,13 @@ const zappedByController: AppController = async (c) => {
|
|||
|
||||
const results = (await Promise.all(
|
||||
events.map(async (event) => {
|
||||
const amount = event.tags.find(([name]) => name === 'amount')?.[1];
|
||||
const onlyDigits = /^\d+$/;
|
||||
if (!amount || !onlyDigits.test(amount)) return;
|
||||
|
||||
const amount = amountSchema.parse(event.tags.find(([name]) => name === 'amount')?.[1]);
|
||||
const comment = event?.content ?? '';
|
||||
|
||||
const account = event?.author ? await renderAccount(event.author) : await accountFromPubkey(event.pubkey);
|
||||
|
||||
return {
|
||||
zap_comment: comment,
|
||||
zap_amount: Number(amount),
|
||||
comment,
|
||||
amount,
|
||||
account,
|
||||
};
|
||||
}),
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import { NostrEvent, NStore } from '@nostrify/nostrify';
|
||||
import { Kysely, UpdateObject } from 'kysely';
|
||||
|
||||
import { SetRequired } from 'type-fest';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { DittoTables } from '@/db/DittoTables.ts';
|
||||
import { findQuoteTag, findReplyTag, getTagSet } from '@/utils/tags.ts';
|
||||
import { Conf } from '@/config.ts';
|
||||
|
@ -140,19 +141,20 @@ async function handleEvent9735(kysely: Kysely<DittoTables>, event: NostrEvent):
|
|||
const id = event.tags.find(([name]) => name === 'e')?.[1];
|
||||
if (!id) return;
|
||||
|
||||
let amount = '0';
|
||||
const amountSchema = z.coerce.number().int().nonnegative().catch(0);
|
||||
let amount = 0;
|
||||
try {
|
||||
const zapRequest = JSON.parse(event.tags.find(([name]) => name === 'description')?.[1]!) as NostrEvent;
|
||||
amount = zapRequest.tags.find(([name]) => name === 'amount')?.[1]!;
|
||||
amount = amountSchema.parse(zapRequest.tags.find(([name]) => name === 'amount')?.[1]);
|
||||
if (amount <= 0) return;
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
if (amount === '0' || !amount || (/^\d+$/).test(amount) === false) return;
|
||||
|
||||
await updateEventStats(
|
||||
kysely,
|
||||
id,
|
||||
({ zaps_amount }) => ({ zaps_amount: Math.max(0, zaps_amount + Number(amount)) }),
|
||||
({ zaps_amount }) => ({ zaps_amount: Math.max(0, zaps_amount + amount) }),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue