63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import postgres from 'npm:postgres@3.4.4';
|
|
import jwt from 'npm:jsonwebtoken@9.0.2';
|
|
|
|
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) => {
|
|
const sql = getDb();
|
|
|
|
try {
|
|
const body = await req.json();
|
|
const token = body._auth_token;
|
|
|
|
if (!token) {
|
|
await sql.end();
|
|
return Response.json({ error: 'Neautorizovaný prístup' }, { status: 401 });
|
|
}
|
|
|
|
try {
|
|
jwt.verify(token, Deno.env.get('JWT_SECRET'));
|
|
} catch {
|
|
await sql.end();
|
|
return Response.json({ error: 'Neplatný token' }, { status: 401 });
|
|
}
|
|
|
|
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 records = await sql`
|
|
SELECT id, datum, prevadzka, licencia, operacia, verzia, typ_os AS "typOS", poznamka_prevadzky, poznamka_operacie
|
|
FROM housekeeping_records
|
|
ORDER BY datum DESC
|
|
LIMIT 1000
|
|
`;
|
|
|
|
await sql.end();
|
|
return Response.json({ records });
|
|
} catch (error) {
|
|
await sql.end();
|
|
return Response.json({ error: error.message }, { status: 500 });
|
|
}
|
|
}); |