import postgres from 'npm:postgres@3.4.4'; function getDb() { return postgres({ host: Deno.env.get('PG_HOST'), port: parseInt(Deno.env.get('PG_PORT') || '5432'), user: Deno.env.get('PG_USER'), password: Deno.env.get('PG_PASSWORD'), database: Deno.env.get('PG_DBNAME'), ssl: false, max: 1, }); } Deno.serve(async (req) => { if (req.method === 'OPTIONS') { return new Response(null, { status: 204, headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'POST, OPTIONS', 'Access-Control-Allow-Headers': 'Content-Type, Authorization', }, }); } if (req.method !== 'POST') { return Response.json({ error: 'Method not allowed' }, { status: 405 }); } const sql = getDb(); try { const body = await req.json(); const { datum, prevadzka, operacia } = body; if (!datum || !prevadzka || !operacia) { return Response.json( { error: 'Missing required fields: datum, prevadzka, operacia' }, { status: 400, headers: { 'Access-Control-Allow-Origin': '*' } } ); } const validOperations = [ 'prihlasenie', 'odhlasenie', 'synchronizacia', 'aktualizacia', 'zalohovanie', 'obnova', 'export', 'import', 'inventura', 'uzavierka' ]; if (!validOperations.includes(operacia)) { return Response.json( { error: `Invalid operacia. Must be one of: ${validOperations.join(', ')}` }, { status: 400, headers: { 'Access-Control-Allow-Origin': '*' } } ); } // Ensure table exists await sql` CREATE TABLE IF NOT EXISTS housekeeping_records ( id SERIAL PRIMARY KEY, datum TIMESTAMP NOT NULL, prevadzka VARCHAR(255) NOT NULL, licencia VARCHAR(255), operacia VARCHAR(50) NOT NULL, verzia VARCHAR(50), typ_os VARCHAR(10), poznamka_prevadzky TEXT, poznamka_operacie TEXT, created_at TIMESTAMP DEFAULT NOW() ) `; const result = await sql` INSERT INTO housekeeping_records (datum, prevadzka, licencia, operacia, verzia, typ_os, poznamka_prevadzky, poznamka_operacie) VALUES (${body.datum}, ${body.prevadzka}, ${body.licencia || null}, ${body.operacia}, ${body.verzia || null}, ${body.typOS || null}, ${body.poznamka_prevadzky || null}, ${body.poznamka_operacie || null}) RETURNING id `; await sql.end(); return Response.json( { success: true, id: result[0].id }, { status: 201, headers: { 'Access-Control-Allow-Origin': '*' } } ); } catch (error) { await sql.end(); return Response.json( { error: error.message }, { status: 500, headers: { 'Access-Control-Allow-Origin': '*' } } ); } });