Fix type errors
This commit is contained in:
@@ -29,6 +29,7 @@ export const backupsRouter = createTRPCRouter({
|
||||
storage_name: string;
|
||||
storage_type: string;
|
||||
discovered_at: Date;
|
||||
server_id?: number;
|
||||
server_name: string | null;
|
||||
server_color: string | null;
|
||||
}>;
|
||||
@@ -38,7 +39,7 @@ export const backupsRouter = createTRPCRouter({
|
||||
if (backups.length === 0) continue;
|
||||
|
||||
// Get hostname from first backup (all backups for same container should have same hostname)
|
||||
const hostname = backups[0]?.hostname || '';
|
||||
const hostname = backups[0]?.hostname ?? '';
|
||||
|
||||
result.push({
|
||||
container_id: containerId,
|
||||
|
||||
@@ -71,9 +71,12 @@ function parseRawConfig(rawConfig: string): any {
|
||||
|
||||
// Parse rootfs into storage and size
|
||||
if (config.rootfs) {
|
||||
const match = config.rootfs.match(/^([^:]+):([^,]+)(?:,size=(.+))?$/);
|
||||
if (match) {
|
||||
config.rootfs_storage = `${match[1]}:${match[2]}`;
|
||||
const regex = /^([^:]+):([^,]+)(?:,size=(.+))?$/;
|
||||
const match = regex.exec(config.rootfs as string);
|
||||
const storage = match?.[1];
|
||||
const path = match?.[2];
|
||||
if (storage && path) {
|
||||
config.rootfs_storage = `${storage}:${path}`;
|
||||
config.rootfs_size = match[3] ?? '';
|
||||
}
|
||||
delete config.rootfs; // Remove the rootfs field since we only need rootfs_storage and rootfs_size
|
||||
@@ -788,7 +791,7 @@ export const installedScriptsRouter = createTRPCRouter({
|
||||
let detectedContainers: any[] = [];
|
||||
|
||||
// Helper function to parse list output and extract IDs
|
||||
const parseListOutput = (output: string, isVM: boolean): string[] => {
|
||||
const parseListOutput = (output: string, _p0: boolean): string[] => {
|
||||
const ids: string[] = [];
|
||||
const lines = output.split('\n').filter(line => line.trim());
|
||||
|
||||
@@ -1047,10 +1050,11 @@ export const installedScriptsRouter = createTRPCRouter({
|
||||
const scriptData = script as any;
|
||||
if (!scriptData.server_id) continue;
|
||||
|
||||
if (!scriptsByServer.has(scriptData.server_id)) {
|
||||
scriptsByServer.set(scriptData.server_id, []);
|
||||
const serverId = Number(scriptData.server_id);
|
||||
if (!scriptsByServer.has(serverId)) {
|
||||
scriptsByServer.set(serverId, []);
|
||||
}
|
||||
scriptsByServer.get(scriptData.server_id)!.push(scriptData);
|
||||
scriptsByServer.get(serverId)!.push(scriptData);
|
||||
}
|
||||
|
||||
// Process each server
|
||||
@@ -1229,7 +1233,7 @@ export const installedScriptsRouter = createTRPCRouter({
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`cleanupOrphanedScripts: Error checking script ${String((scriptData as any).script_name)}:`, error);
|
||||
console.error(`cleanupOrphanedScripts: Error checking script ${String((scriptData).script_name)}:`, error);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -1347,7 +1351,7 @@ export const installedScriptsRouter = createTRPCRouter({
|
||||
|
||||
try {
|
||||
await Promise.race([
|
||||
new Promise<void>((resolve, reject) => {
|
||||
new Promise<void>((resolve) => {
|
||||
void sshExecutionService.executeCommand(
|
||||
server as Server,
|
||||
'pct list',
|
||||
@@ -1375,7 +1379,7 @@ export const installedScriptsRouter = createTRPCRouter({
|
||||
|
||||
try {
|
||||
await Promise.race([
|
||||
new Promise<void>((resolve, reject) => {
|
||||
new Promise<void>((resolve) => {
|
||||
void sshExecutionService.executeCommand(
|
||||
server as Server,
|
||||
'qm list',
|
||||
@@ -1479,7 +1483,7 @@ export const installedScriptsRouter = createTRPCRouter({
|
||||
}
|
||||
|
||||
// Determine if it's a VM or LXC
|
||||
const vm = await isVM(input.id, scriptData.container_id, scriptData.server_id);
|
||||
const vm = await isVM(input.id, String(scriptData.container_id), Number(scriptData.server_id));
|
||||
|
||||
// Check container status (use qm for VMs, pct for LXC)
|
||||
const statusCommand = vm
|
||||
@@ -1582,7 +1586,7 @@ export const installedScriptsRouter = createTRPCRouter({
|
||||
}
|
||||
|
||||
// Determine if it's a VM or LXC
|
||||
const vm = await isVM(input.id, scriptData.container_id, scriptData.server_id);
|
||||
const vm = await isVM(input.id, String(scriptData.container_id), Number(scriptData.server_id));
|
||||
|
||||
// Execute control command (use qm for VMs, pct for LXC)
|
||||
const controlCommand = vm
|
||||
@@ -1678,7 +1682,7 @@ export const installedScriptsRouter = createTRPCRouter({
|
||||
}
|
||||
|
||||
// Determine if it's a VM or LXC
|
||||
const vm = await isVM(input.id, scriptData.container_id, scriptData.server_id);
|
||||
const vm = await isVM(input.id, String(scriptData.container_id), Number(scriptData.server_id));
|
||||
|
||||
// First check if container is running and stop it if necessary
|
||||
const statusCommand = vm
|
||||
@@ -2372,7 +2376,7 @@ EOFCONFIG`;
|
||||
let serverHostname = '';
|
||||
try {
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
sshExecutionService.executeCommand(
|
||||
void sshExecutionService.executeCommand(
|
||||
server as Server,
|
||||
'hostname',
|
||||
(data: string) => {
|
||||
|
||||
@@ -100,7 +100,7 @@ export const scriptsRouter = createTRPCRouter({
|
||||
getAllScripts: publicProcedure
|
||||
.query(async () => {
|
||||
try {
|
||||
const scripts = await githubJsonService.getAllScripts();
|
||||
const scripts = await githubJsonService.getAllScripts("");
|
||||
return { success: true, scripts };
|
||||
} catch (error) {
|
||||
return {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { createTRPCRouter, publicProcedure } from "~/server/api/trpc";
|
||||
import { readFile, writeFile } from "fs/promises";
|
||||
import { readFile, writeFile, stat } from "fs/promises";
|
||||
import { join } from "path";
|
||||
import { spawn } from "child_process";
|
||||
import { env } from "~/env";
|
||||
@@ -176,10 +176,21 @@ export const versionRouter = createTRPCRouter({
|
||||
return {
|
||||
success: true,
|
||||
logs: [],
|
||||
isComplete: false
|
||||
isComplete: false,
|
||||
logFileModifiedTime: null
|
||||
};
|
||||
}
|
||||
|
||||
// Get log file modification time for session validation
|
||||
let logFileModifiedTime: number | null = null;
|
||||
try {
|
||||
const stats = await stat(logPath);
|
||||
logFileModifiedTime = stats.mtimeMs;
|
||||
} catch (statError) {
|
||||
// If we can't get stats, continue without timestamp
|
||||
console.warn('Could not get log file stats:', statError);
|
||||
}
|
||||
|
||||
const logs = await readFile(logPath, 'utf-8');
|
||||
const logLines = logs.split('\n')
|
||||
.filter(line => line.trim())
|
||||
@@ -202,7 +213,8 @@ export const versionRouter = createTRPCRouter({
|
||||
return {
|
||||
success: true,
|
||||
logs: logLines,
|
||||
isComplete
|
||||
isComplete,
|
||||
logFileModifiedTime
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error reading update logs:', error);
|
||||
@@ -210,7 +222,8 @@ export const versionRouter = createTRPCRouter({
|
||||
success: false,
|
||||
error: error instanceof Error ? error.message : 'Failed to read update logs',
|
||||
logs: [],
|
||||
isComplete: false
|
||||
isComplete: false,
|
||||
logFileModifiedTime: null
|
||||
};
|
||||
}
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user