Spaces:
Sleeping
Sleeping
File size: 1,332 Bytes
c3e8f3d d0a1b70 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d d0a1b70 f80b091 c3e8f3d d0a1b70 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d f80b091 c3e8f3d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
'use server';
import { revalidatePath } from 'next/cache';
import { kv } from '@vercel/kv';
import { auth } from '@/auth';
import { ChatEntity } from '@/lib/types';
export async function getKVChats() {
const session = await auth();
const email = session?.user?.email;
if (!email) {
return [];
}
try {
const pipeline = kv.pipeline();
const chats: string[] = await kv.zrange(`user:chat:${email}`, 0, -1, {
rev: true,
});
for (const chat of chats) {
pipeline.hgetall(chat);
}
const results = await pipeline.exec();
return results as ChatEntity[];
} catch (error) {
return [];
}
}
export async function getKVChat(id: string) {
const chat = await kv.hgetall<ChatEntity>(`chat:${id}`);
return chat;
}
export async function removeKVChat({ id, path }: { id: string; path: string }) {
const session = await auth();
if (!session) {
return {
error: 'Unauthorized',
};
}
//Convert uid to string for consistent comparison with session.user.id
const uid = String(await kv.hget(`chat:${id}`, 'userId'));
if (uid !== session?.user?.id) {
return {
error: 'Unauthorized',
};
}
await kv.del(`chat:${id}`);
await kv.zrem(`user:chat:${session.user.id}`, `chat:${id}`);
revalidatePath('/');
return revalidatePath(path);
}
|