import { createStorageProvider, type StorageProviderType } from '@/lib/storage' /** * Generate a pre-signed download URL for a project logo. * Returns null if the project has no logo. */ export async function getProjectLogoUrl( logoKey: string | null | undefined, logoProvider: string | null | undefined ): Promise { if (!logoKey) return null try { const providerType = (logoProvider as StorageProviderType) || 's3' const provider = createStorageProvider(providerType) return await provider.getDownloadUrl(logoKey) } catch { return null } } /** * Batch-generate logo URLs for multiple projects. * Adds `logoUrl` field to each project object. */ export async function attachProjectLogoUrls< T extends { logoKey?: string | null; logoProvider?: string | null } >(projects: T[]): Promise<(T & { logoUrl: string | null })[]> { return Promise.all( projects.map(async (project) => ({ ...project, logoUrl: await getProjectLogoUrl(project.logoKey, project.logoProvider), })) ) }