import axios from 'axios'; const STRAPI_URL = process.env.STRAPI_URL || 'http://localhost:1337'; const STRAPI_TOKEN = process.env.STRAPI_API_TOKEN; const strapi = axios.create({ baseURL: `${STRAPI_URL}/api`, headers: { Authorization: `Bearer ${STRAPI_TOKEN}`, }, }); export interface StrapiResponse { data: { id: number; attributes: T; }[]; meta: { pagination: { page: number; pageSize: number; pageCount: number; total: number; }; }; } export interface Product { title: string; sku: string; description: string; application: string; content: string; technicalData: any; locale: string; images?: { data: { attributes: { url: string; alternativeText: string; }; }[]; }; } export async function getProducts(locale: string = 'de') { try { const response = await strapi.get>('/products', { params: { locale, populate: '*', }, }); return response.data.data.map(item => ({ id: item.id, ...item.attributes, })); } catch (error) { console.error('Error fetching products from Strapi:', error); return []; } } export async function getProductBySku(sku: string, locale: string = 'de') { try { const response = await strapi.get>('/products', { params: { filters: { sku: { $eq: sku } }, locale, populate: '*', }, }); if (response.data.data.length === 0) return null; const item = response.data.data[0]; return { id: item.id, ...item.attributes, }; } catch (error) { console.error(`Error fetching product ${sku} from Strapi:`, error); return null; } } export default strapi;