discord-clone/lib/conversation.ts

72 lines
1.7 KiB
TypeScript
Raw Normal View History

import { db } from "@/lib/db";
export const getOrCreateConversation = async (memberOneId: string, memberTwoId: string) => {
let conversation = await findConversation(memberOneId, memberTwoId) || await findConversation(memberTwoId, memberOneId);
if (!conversation)
{
conversation = await createNewConversation(memberOneId, memberTwoId);
}
return conversation;
}
const findConversation = async (memberOneId: string, memberTwoId: string) => {
try
{
return await db.conversation.findFirst({
where: {
AND: [
{ memberOneId: memberOneId},
{ memberTwoId: memberTwoId},
],
},
include: {
2023-11-12 17:45:20 -08:00
memberOne: {
include: {
profile: true,
}
},
2023-11-12 17:45:20 -08:00
memberTwo: {
include: {
profile: true,
}
}
}
});
}
catch (error)
{
return null;
}
}
const createNewConversation = async (memberOneId: string, memberTwoId: string) => {
try
{
return await db.conversation.create({
data:{
memberOneId,
memberTwoId,
},
include: {
2023-11-12 17:45:20 -08:00
memberOne: {
include: {
profile: true,
}
},
2023-11-12 17:45:20 -08:00
memberTwo: {
include: {
profile: true,
}
}
},
});
}
catch (error)
{
return null;
}
}