90 lines
2.7 KiB
TypeScript
90 lines
2.7 KiB
TypeScript
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': '*' } }
|
|
);
|
|
}
|
|
}); |