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<string | null> {
  if (!logoKey) return null

  try {
    const providerType = (logoProvider as StorageProviderType) || 's3'
    const provider = createStorageProvider(providerType)
    return await provider.getDownloadUrl(logoKey)
  } catch (error) {
    console.error('[LogoURL] Failed to generate URL for key:', logoKey, error)
    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),
    }))
  )
}
