dockerize, composte, and various improvements
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
69
server/api/user/friends/[id]/accept.post.ts
Normal file
69
server/api/user/friends/[id]/accept.post.ts
Normal 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.'
|
||||
};
|
||||
});
|
||||
37
server/api/user/friends/[id]/cancel.post.ts
Normal file
37
server/api/user/friends/[id]/cancel.post.ts
Normal 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.'
|
||||
};
|
||||
});
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user