a tool for shared writing and social publishing
at feature/reader 36 lines 1.0 kB view raw
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}