import type { MetadataRoute } from 'next';
import { loadStoreConfig } from '@/lib/storeConfig';
import { loadStoreCatalog } from '@/lib/storeCatalog';
import { getStoreBaseUrl, isIndexable } from '@/lib/storeSeo';

/**
 * sitemap.xml por tenant: la portada y la ficha de cada producto publicado
 * (/producto/[slug], que se renderiza en el servidor con su propia metadata).
 *
 * Una tienda no publicada devuelve un sitemap vacío (y su robots.txt ya bloquea
 * todo).
 */
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
	const config = await loadStoreConfig();

	if (!isIndexable(config)) return [];

	const base = await getStoreBaseUrl();

	const catalog = await loadStoreCatalog();
	const productos = (catalog.products ?? []).map((p) => ({
		url: `${base}/producto/${encodeURIComponent(p.slug || p.id)}`,
		changeFrequency: 'weekly' as const,
		priority: 0.7
	}));

	return [
		{
			url: base,
			lastModified: new Date(),
			changeFrequency: 'daily',
			priority: 1
		},
		...productos
	];
}
