activity for server result errors

This commit is contained in:
yohlo
2025-10-08 09:20:26 -05:00
parent 15bbca8b90
commit 97427718e8
2 changed files with 43 additions and 2 deletions

View File

@@ -13,7 +13,7 @@ export function getRouter() {
gcTime: 5 * 60 * 1000, // 5 minutes
refetchOnWindowFocus: false,
refetchOnReconnect: "always",
retry: 3,
retry: 1,
},
},
});

View File

@@ -1,5 +1,7 @@
import { logger } from "../../logger";
import { ErrorType, ServerError, ServerResult } from "../types";
import { pbAdmin } from "../../pocketbase/client";
import { getRequest } from "@tanstack/react-start/server";
export const createServerError = (
type: ErrorType,
@@ -15,14 +17,53 @@ export const createServerError = (
context,
});
export const toServerResult = async <T>(serverFn: () => Promise<T>): Promise<ServerResult<T>> => {
export const toServerResult = async <T>(
serverFn: () => Promise<T>
): Promise<ServerResult<T>> => {
const startTime = Date.now();
try {
const data = await serverFn();
return { success: true, data };
} catch (error) {
const duration = Date.now() - startTime;
logger.error('Server Fn Error', error);
const mappedError = mapKnownError(error);
let fnName = 'unknown';
try {
const request = getRequest();
const url = new URL(request.url);
const functionId = url.searchParams.get('_serverFnId') || url.pathname;
if (functionId.includes('--')) {
const match = functionId.match(/--([^_]+)_/);
fnName = match?.[1] || functionId.split('--')[1]?.split('_')[0] || 'unknown';
} else {
fnName = serverFn.name || 'unknown';
}
} catch {
fnName = serverFn.name || 'unknown';
}
try {
await pbAdmin.authPromise;
await pbAdmin.createActivity({
name: fnName,
duration,
success: false,
error: mappedError.message,
arguments: {
errorType: mappedError.code,
statusCode: mappedError.statusCode,
userMessage: mappedError.userMessage,
},
});
} catch (activityError) {
}
return { success: false, error: mappedError };
}
};