| import { z } from "zod"; | |
| import type { Transaction } from "./types"; | |
| export const createTransactionSchema = z.object({ | |
| name: z.string(), | |
| currency: z.string(), | |
| bank_account_id: z.string(), | |
| team_id: z.string(), | |
| internal_id: z.string(), | |
| status: z.enum(["posted", "pending"]), | |
| method: z.enum(["card", "bank", "other"]), | |
| date: z.string().date(), | |
| amount: z.number(), | |
| manual: z.boolean(), | |
| category_slug: z.string().nullable(), | |
| }); | |
| export const validateTransactions = (transactions: Transaction[]) => { | |
| const processedTransactions = transactions.map((transaction) => | |
| createTransactionSchema.safeParse(transaction), | |
| ); | |
| const validTransactions = processedTransactions.filter( | |
| (transaction) => transaction.success, | |
| ); | |
| const invalidTransactions = processedTransactions.filter( | |
| (transaction) => !transaction.success, | |
| ); | |
| return { | |
| validTransactions: validTransactions.map((transaction) => transaction.data), | |
| invalidTransactions: invalidTransactions.map( | |
| (transaction) => transaction.error, | |
| ), | |
| }; | |
| }; | |