Rearchitecture for v0.4.0 (#197)

* feat: database redist support

* feat: rearchitecture of database schemas, migration reset, and #180

* feat: import redists

* fix: giantbomb logging bug

* feat: partial user platform support + statusMessage -> message

* feat: add user platform filters to store view

* fix: sanitize svg uploads

... copilot suggested this

I feel dirty.

* feat: beginnings of platform & redist management

* feat: add server side redist patching

* fix: update drop-base commit

* feat: import of custom platforms & file extensions

* fix: redelete platform

* fix: remove platform

* feat: uninstall commands, new R UI

* checkpoint: before migrating to nuxt v4

* update to nuxt 4

* fix: fixes for Nuxt v4 update

* fix: remaining type issues

* feat: initial feedback to import other kinds of versions

* working commit

* fix: lint

* feat: redist import
This commit is contained in:
DecDuck
2025-11-10 10:36:13 +11:00
committed by GitHub
parent dfa30c8a65
commit 251ddb8ff8
465 changed files with 8029 additions and 7509 deletions

View File

@ -9,7 +9,7 @@ import prisma from "../db/database";
import cacheHandler from "../cache";
import { systemConfig } from "../config/sys-conf";
import { type } from "arktype";
import { logger } from "~/server/internal/logging";
import { logger } from "~~/server/internal/logging";
import type pino from "pino";
export class FsObjectBackend extends ObjectBackend {
@ -123,7 +123,7 @@ export class FsObjectBackend extends ObjectBackend {
const metadataRaw = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
const metadata = objectMetadata(metadataRaw);
if (metadata instanceof type.errors) {
logger.error("FsObjectBackend#fetchMetadata", metadata.summary);
logger.error("FsObjectBackend#fetchMetadata: %s", metadata.summary);
return undefined;
}
await this.metadataCache.set(id, metadata);
@ -194,11 +194,13 @@ export class FsObjectBackend extends ObjectBackend {
try {
fs.rmSync(filePath);
cleanupLogger.info(
`[FsObjectBackend#cleanupMetadata]: Removed ${file}`,
`[FsObjectBackend#cleanupMetadata]: Removed %s`,
file
);
} catch (error) {
cleanupLogger.error(
`[FsObjectBackend#cleanupMetadata]: Failed to remove ${file}`,
`[FsObjectBackend#cleanupMetadata]: Failed to remove %s: %s`,
file,
error,
);
}

View File

@ -32,15 +32,12 @@ export const objectMetadata = type({
});
export type ObjectMetadata = typeof objectMetadata.infer;
export enum ObjectPermission {
Read = "read",
Write = "write",
Delete = "delete",
}
export const ObjectPermissions = ["read", "write", "delete"] as const;
export type ObjectPermission = (typeof ObjectPermissions)[number];
export const ObjectPermissionPriority: Array<ObjectPermission> = [
ObjectPermission.Read,
ObjectPermission.Write,
ObjectPermission.Delete,
"read",
"write",
"delete",
];
export type Object = { mime: string; data: Source };

View File

@ -5,7 +5,7 @@ This is used as a utility in metadata handling, so we only fetch the objects if
import type { Readable } from "stream";
import { randomUUID } from "node:crypto";
import objectHandler from ".";
import type { TaskRunContext } from "../tasks";
import type { TaskRunContext } from "../tasks/utils";
export type TransactionDataType = string | Readable | Buffer;
type TransactionTable = Map<string, TransactionDataType>; // ID to data