From d43e731fe191d7e35d96847fe095c94555dd8ca6 Mon Sep 17 00:00:00 2001 From: Sebastien Castiel Date: Sun, 28 Jan 2024 18:51:29 -0500 Subject: Attach documents to expenses (#64) * Upload documents to receipts * Improve documents * Make the feature opt-in * Fix file name issue --- src/lib/env.ts | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) (limited to 'src/lib/env.ts') diff --git a/src/lib/env.ts b/src/lib/env.ts index 3db102e..9912945 100644 --- a/src/lib/env.ts +++ b/src/lib/env.ts @@ -1,16 +1,37 @@ -import { z } from 'zod' +import { ZodIssueCode, z } from 'zod' -const envSchema = z.object({ - POSTGRES_URL_NON_POOLING: z.string().url(), - POSTGRES_PRISMA_URL: z.string().url(), - NEXT_PUBLIC_BASE_URL: z - .string() - .optional() - .default( - process.env.VERCEL_URL - ? `https://${process.env.VERCEL_URL}` - : 'http://localhost:3000', - ), -}) +const envSchema = z + .object({ + POSTGRES_URL_NON_POOLING: z.string().url(), + POSTGRES_PRISMA_URL: z.string().url(), + NEXT_PUBLIC_BASE_URL: z + .string() + .optional() + .default( + process.env.VERCEL_URL + ? `https://${process.env.VERCEL_URL}` + : 'http://localhost:3000', + ), + NEXT_PUBLIC_ENABLE_EXPENSE_DOCUMENTS: z.coerce.boolean().default(false), + S3_UPLOAD_KEY: z.string().optional(), + S3_UPLOAD_SECRET: z.string().optional(), + S3_UPLOAD_BUCKET: z.string().optional(), + S3_UPLOAD_REGION: z.string().optional(), + }) + .superRefine((env, ctx) => { + if ( + env.NEXT_PUBLIC_ENABLE_EXPENSE_DOCUMENTS && + (!env.S3_UPLOAD_BUCKET || + !env.S3_UPLOAD_KEY || + !env.S3_UPLOAD_REGION || + !env.S3_UPLOAD_SECRET) + ) { + ctx.addIssue({ + code: ZodIssueCode.custom, + message: + 'If NEXT_PUBLIC_ENABLE_EXPENSE_DOCUMENTS is specified, then S3_* must be specified too', + }) + } + }) export const env = envSchema.parse(process.env) -- cgit v1.3