a tool for shared writing and social publishing
1"use server";
2
3import { drizzle } from "drizzle-orm/node-postgres";
4import {
5 entities,
6 permission_tokens,
7 permission_token_rights,
8} from "drizzle/schema";
9import { eq } from "drizzle-orm";
10import { PermissionToken } from "src/replicache";
11import { pool } from "supabase/pool";
12
13export async function deleteLeaflet(permission_token: PermissionToken) {
14 const client = await pool.connect();
15 const db = drizzle(client);
16 await db.transaction(async (tx) => {
17 let [token] = await tx
18 .select()
19 .from(permission_tokens)
20 .leftJoin(
21 permission_token_rights,
22 eq(permission_tokens.id, permission_token_rights.token),
23 )
24 .where(eq(permission_tokens.id, permission_token.id));
25
26 if (!token?.permission_token_rights?.write) return;
27 await tx
28 .delete(entities)
29 .where(eq(entities.set, token.permission_token_rights.entity_set));
30 await tx
31 .delete(permission_tokens)
32 .where(eq(permission_tokens.id, permission_token.id));
33 });
34 client.release();
35 return;
36}