forked from
rocksky.app/rocksky
A decentralized music tracking and discovery platform built on AT Protocol 馃幍
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}