feat: very basic screenshot api

This commit is contained in:
Huskydog9988
2025-05-15 15:51:35 -04:00
parent 831b20d737
commit a89c657fe1
9 changed files with 126 additions and 5 deletions

View File

@ -13,7 +13,16 @@ class ScreenshotManager {
});
}
async getAllByGame(gameId: string, userId: string) {
async getUserAll(userId: string) {
const results = await prisma.screenshot.findMany({
where: {
userId,
},
});
return results;
}
async getUserAllByGame(userId: string, gameId: string) {
const results = await prisma.screenshot.findMany({
where: {
gameId,
@ -31,9 +40,16 @@ class ScreenshotManager {
});
}
async upload(gameId: string, userId: string, inputStream: IncomingMessage) {
async upload(userId: string, gameId: string, inputStream: IncomingMessage) {
const objectId = randomUUID();
const saveStream = await objectHandler.createWithStream(objectId, {}, []);
const saveStream = await objectHandler.createWithStream(
objectId,
{
// TODO: set createAt to the time screenshot was taken
createdAt: new Date().toISOString(),
},
[`${userId}:read`, `${userId}:delete`],
);
if (!saveStream)
throw createError({
statusCode: 500,
@ -43,12 +59,12 @@ class ScreenshotManager {
// pipe into object store
await stream.pipeline(inputStream, saveStream);
// TODO: set createAt to the time screenshot was taken
await prisma.screenshot.create({
data: {
gameId,
userId,
objectId,
private: true,
},
});
}