A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at fff48ea3213bb11efcfcb7db85be1dfcd2bebc5e 31 lines 840 B view raw
1import chalk from "chalk"; 2import { consola } from "consola"; 3import type { Context } from "context"; 4import { eq } from "drizzle-orm"; 5import _ from "lodash"; 6import { StringCodec } from "nats"; 7import tables from "schema"; 8 9export function onNewUser(ctx: Context) { 10 const sc = StringCodec(); 11 const sub = ctx.nc.subscribe("rocksky.user"); 12 (async () => { 13 for await (const m of sub) { 14 const payload: { 15 xata_id: string; 16 } = JSON.parse(sc.decode(m.data)); 17 const results = await ctx.db 18 .select() 19 .from(tables.users) 20 .where(eq(tables.users.id, payload.xata_id)) 21 .execute(); 22 23 consola.info(`New user: ${chalk.cyan(_.get(results, "0.handle"))}`); 24 25 await ctx.meilisearch.post( 26 `/indexes/users/documents?primaryKey=id`, 27 results, 28 ); 29 } 30 })(); 31}