changes
This commit is contained in:
@@ -32,6 +32,18 @@ const require = createRequire(import.meta.url);
|
||||
const settingsRepo = () => AppDataSource.getRepository(AppSetting);
|
||||
const expenseRepo = () => AppDataSource.getRepository(Expense);
|
||||
|
||||
const normalizeOptionalString = (value: unknown) => {
|
||||
if (value === null || value === undefined) return undefined;
|
||||
const normalized = String(value).trim();
|
||||
return normalized ? normalized : undefined;
|
||||
};
|
||||
|
||||
const normalizeNullableString = (value: unknown) => {
|
||||
if (value === null || value === undefined) return undefined;
|
||||
const normalized = String(value).trim();
|
||||
return normalized ? normalized : null;
|
||||
};
|
||||
|
||||
const defaultPrefs = (email: string) => ({
|
||||
enabled: false,
|
||||
frequency: 'monthly' as const,
|
||||
@@ -196,7 +208,7 @@ export const getPreferences = async (req: AuthenticatedRequest, res: Response) =
|
||||
};
|
||||
|
||||
export const updatePreferences = async (req: AuthenticatedRequest, res: Response) => {
|
||||
const parsed = preferencesSchema.safeParse(req.body);
|
||||
const parsed = preferencesSchema.safeParse({ ...req.body, sendToEmail: normalizeNullableString(req.body?.sendToEmail) });
|
||||
if (!parsed.success) {
|
||||
return res.status(400).json({ message: 'Invalid report preferences payload', issues: parsed.error.issues });
|
||||
}
|
||||
@@ -282,7 +294,7 @@ export const sendReport = async (req: AuthenticatedRequest, res: Response) => {
|
||||
|
||||
export const exportReport = async (req: AuthenticatedRequest, res: Response) => {
|
||||
await processDueRecurringExpenses(req.user!.id);
|
||||
const parsed = exportQuerySchema.safeParse(req.query);
|
||||
const parsed = exportQuerySchema.safeParse({ ...req.query, format: normalizeOptionalString(req.query.format), startDate: normalizeOptionalString(req.query.startDate), endDate: normalizeOptionalString(req.query.endDate), categoryIds: normalizeOptionalString(req.query.categoryIds), status: normalizeOptionalString(req.query.status), tag: normalizeOptionalString(req.query.tag) });
|
||||
if (!parsed.success) return res.status(400).json({ message: 'Invalid report export filters', issues: parsed.error.issues });
|
||||
|
||||
const categoryIds = parsed.data.categoryIds?.split(',').filter(Boolean) ?? [];
|
||||
|
||||
Reference in New Issue
Block a user