47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
const ROOT_DIR = path.resolve(process.cwd());
|
|
const DEFAULT_UPLOAD_DIR = path.join(ROOT_DIR, 'uploads');
|
|
|
|
export const UPLOAD_DIR = process.env.UPLOAD_DIR && process.env.UPLOAD_DIR.trim() !== ''
|
|
? path.resolve(process.env.UPLOAD_DIR)
|
|
: DEFAULT_UPLOAD_DIR;
|
|
|
|
export function ensureUploadDir(): void {
|
|
if (!fs.existsSync(UPLOAD_DIR)) {
|
|
fs.mkdirSync(UPLOAD_DIR, { recursive: true });
|
|
}
|
|
}
|
|
|
|
export const storageConfig = {
|
|
gcp: {
|
|
projectId: process.env.GCP_PROJECT_ID || '',
|
|
bucketName: process.env.GCP_BUCKET_NAME || '',
|
|
keyFile: process.env.GCP_KEY_FILE || './config/gcp-key.json',
|
|
},
|
|
|
|
// File upload settings
|
|
maxFileSize: parseInt(process.env.MAX_FILE_SIZE_MB || '10', 10) * 1024 * 1024, // Convert MB to bytes
|
|
allowedMimeTypes: [
|
|
'application/pdf',
|
|
'application/msword',
|
|
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
'application/vnd.ms-excel',
|
|
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
'application/vnd.ms-powerpoint',
|
|
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
'image/jpeg',
|
|
'image/jpg',
|
|
'image/png',
|
|
'image/gif',
|
|
],
|
|
|
|
// Storage paths
|
|
paths: {
|
|
documents: 'documents',
|
|
attachments: 'attachments',
|
|
temp: 'temp',
|
|
},
|
|
};
|