import { json, error } from '@sveltejs/kit'; import { createAirtableServices } from '$lib/airtable'; import type { RequestHandler } from './$types'; const apiKey = process.env.VITE_AIRTABLE_API_KEY; const baseId = process.env.VITE_AIRTABLE_BASE_ID; if (!apiKey || !baseId) { throw new Error('Airtable API key and base ID must be configured'); } const airtable = createAirtableServices(apiKey, baseId); // GET /api/watering-logs - List all watering logs export const GET: RequestHandler = async ({ url }) => { try { const limit = url.searchParams.get('limit'); const potId = url.searchParams.get('potId'); let filter = ''; if (potId) { filter = `{potId}="${potId}"`; } const response = await airtable.wateringLogs.listRecords( filter, ['wateredAt'], // sort by wateredAt descending limit ? parseInt(limit) : undefined ); const logs = response.records.map(record => ({ id: record.id, ...record.fields, wateredAt: record.fields.wateredAt ? new Date(record.fields.wateredAt) : new Date() })); return json(logs); } catch (err) { console.error('Error fetching watering logs:', err); throw error(500, 'Failed to fetch watering logs'); } }; // POST /api/watering-logs - Create a new watering log entry export const POST: RequestHandler = async ({ request }) => { try { const logData = await request.json(); const fields = { ...logData, wateredAt: logData.wateredAt?.toISOString() }; const record = await airtable.wateringLogs.createRecord(fields); const log = { id: record.id, ...record.fields, wateredAt: record.fields.wateredAt ? new Date(record.fields.wateredAt) : new Date() }; return json(log, { status: 201 }); } catch (err) { console.error('Error creating watering log:', err); throw error(500, 'Failed to create watering log'); } };