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