dockerize, composte, and various improvements

This commit is contained in:
Zoe
2023-06-05 01:44:12 -05:00
parent cb6bfd8880
commit 99c385d211
56 changed files with 5907 additions and 8091 deletions

View File

@@ -1,6 +1,5 @@
import { IServer } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -1,6 +1,5 @@
import { IChannel, IServer, SafeUser } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {
@@ -44,6 +43,9 @@ export default defineEventHandler(async (event) => {
}
},
messages: {
orderBy: {
createdAt: 'asc',
},
select: {
id: true,
body: true,

View File

@@ -1,5 +1,4 @@
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -1,6 +1,6 @@
import { Prisma } from '@prisma/client';
import emojiRegex from 'emoji-regex';
import { Prisma, PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {
@@ -37,6 +37,15 @@ export default defineEventHandler(async (event) => {
}
},
reactions: {
where: {
users: {
some: {
NOT: {
id: undefined,
}
}
}
},
select: {
id: true,
emoji: true,

View File

@@ -1,7 +1,6 @@
import { IChannel, IServer, SafeUser, IMessage } from '~/types';
import { Server } from 'socket.io';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
declare global {
let io: Server;

View File

@@ -1,6 +1,5 @@
import { IServer } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -1,6 +1,5 @@
import { IChannel, SafeUser } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {
@@ -10,15 +9,17 @@ export default defineEventHandler(async (event) => {
});
}
const { partnerId } = await readBody(event);
const body = await readBody(event);
if (!partnerId) {
if (!body || !body.partnerId) {
throw createError({
statusCode: 400,
statusMessage: 'A friend is required to create a DM.',
});
}
const { partnerId } = body;
const partner = await prisma.user.findFirst({
where: {
id: partnerId

View File

@@ -1,6 +1,5 @@
import { PrismaClient } from '@prisma/client';
import { SafeUser } from '~/types';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {
@@ -17,6 +16,34 @@ export default defineEventHandler(async (event) => {
select: {
id: true,
username: true,
outgoingFriendRequests: {
where: {
status: 'sent'
},
select: {
id: true,
recipient: {
select: {
id: true,
username: true
}
}
}
},
incomingFriendRequests: {
where: {
status: 'sent'
},
select: {
id: true,
sender: {
select: {
id: true,
username: true
}
}
}
},
friends: {
select: {
id: true,

View File

@@ -1,6 +1,5 @@
import { IChannel, IServer, SafeUser } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -1,6 +1,5 @@
import { IInviteCode, IServer, SafeUser } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -1,6 +1,5 @@
import { IServer } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -1,6 +1,5 @@
import { IInviteCode, IServer } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -2,9 +2,8 @@ import bcryptjs from 'bcryptjs';
import { v4 as uuidv4 } from 'uuid';
import * as dotenv from 'dotenv';
import crypto from 'node:crypto';
import { PrismaClient } from '@prisma/client';
import { IUser } from '~/types';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
dotenv.config();
export default defineEventHandler(async (event) => {
@@ -19,13 +18,47 @@ export default defineEventHandler(async (event) => {
});
}
let user = await prisma.user.findFirst({
const user = await prisma.user.findFirst({
where: {
username: body.username
},
select: {
id: true,
username: true,
outgoingFriendRequests: {
where: {
status: 'sent'
},
select: {
id: true,
recipient: {
select: {
id: true,
username: true
}
}
}
},
incomingFriendRequests: {
where: {
status: 'sent'
},
select: {
id: true,
sender: {
select: {
id: true,
username: true
}
}
}
},
friends: {
select: {
id: true,
username: true,
}
},
passwordhash: true,
servers: {
select: {

View File

@@ -2,9 +2,8 @@ import bcryptjs from 'bcryptjs';
import { v4 as uuidv4 } from 'uuid';
import * as dotenv from 'dotenv';
import crypto from 'node:crypto';
import { PrismaClient } from '@prisma/client';
import { IUser, SafeUser } from '~/types';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
dotenv.config();
export default defineEventHandler(async (event) => {
@@ -50,6 +49,40 @@ export default defineEventHandler(async (event) => {
select: {
id: true,
username: true,
outgoingFriendRequests: {
where: {
status: 'sent'
},
select: {
id: true,
recipient: {
select: {
id: true,
username: true
}
}
}
},
incomingFriendRequests: {
where: {
status: 'sent'
},
select: {
id: true,
sender: {
select: {
id: true,
username: true
}
}
}
},
friends: {
select: {
id: true,
username: true,
}
},
servers: {
select: {
id: true,

View File

@@ -1,6 +1,5 @@
import { IServer } from '~/types';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -1,5 +1,4 @@
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -0,0 +1,69 @@
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {
throw createError({
statusCode: 401,
statusMessage: 'Unauthenticated',
});
}
const requestId = event.context.params?.id;
if (!requestId) return;
const request = await prisma.friendRequest.findFirst({
where: {
id: requestId
}
});
if (!request?.id) {
throw createError({
statusCode: 404,
statusMessage: 'friend request not found.'
});
}
if (request?.recipientId !== event.context.user.id) {
throw createError({
statusCode: 403,
statusMessage: 'You do not have permission to accept this friend request.'
});
}
await prisma.user.update({
where: {
id: event.context.user.id
},
data: {
friends: {
connect: [{ id: request.senderId }]
}
}
});
await prisma.user.update({
where: {
id: request.senderId
},
data: {
friends: {
connect: [{ id: event.context.user.id }]
}
}
});
await prisma.friendRequest.update({
where: {
id: requestId
},
data: {
status: 'accepted'
}
});
return {
message: 'friend request accepted successfully.'
};
});

View File

@@ -0,0 +1,37 @@
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {
throw createError({
statusCode: 401,
statusMessage: 'Unauthenticated',
});
}
const requestId = event.context.params?.id;
if (!requestId) return;
const request = await prisma.friendRequest.findFirst({
where: {
id: requestId
}
});
if (request?.senderId !== event.context.user.id && request?.recipientId !== event.context.user.id) {
throw createError({
statusCode: 403,
statusMessage: 'You do not have permission to cancel this friend request.'
});
}
await prisma.friendRequest.delete({
where: {
id: requestId
}
});
return {
message: 'successfully cancelled this friend request.'
};
});

View File

@@ -1,6 +1,5 @@
import { PrismaClient } from '@prisma/client';
import { IChannel, IServer } from '~/types';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {

View File

@@ -1,5 +1,4 @@
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
import prisma from '~/server/utils/prisma';
export default defineEventHandler(async (event) => {
const { sessionToken } = parseCookies(event);