Add files via upload
This commit is contained in:
1 parent
c3ac407e2e
commit
e89393b4f3
1 file changed
+37
-3
@@ -2,13 +2,48 @@
|
||||
import { neon } from '@neondatabase/serverless';
|
||||
import { randomBytes, scryptSync, timingSafeEqual } from 'node:crypto';
|
||||
|
||||
export const sql = neon(process.env.DATABASE_URL);
|
||||
|
||||
export const ONLINE_SECS = 60;
|
||||
export const MAX_TEXT_LEN = 500;
|
||||
export const MAX_POLL = 50;
|
||||
export const PREVIEW_LEN = 38;
|
||||
|
||||
/* ---------------- Datenbank-Verbindung (verzögert aufgebaut) ----------------
|
||||
* Wichtig: NICHT beim Import verbinden. Fehlt die Umgebungsvariable, würde
|
||||
* neon() sofort werfen und die Function stürzt ab, bevor irgendein try/catch
|
||||
* greift (Vercel zeigt dann nur FUNCTION_INVOCATION_FAILED). So bekommen wir
|
||||
* stattdessen eine lesbare ERR|-Zeile.
|
||||
*/
|
||||
let _sql = null;
|
||||
|
||||
function getSql() {
|
||||
if (_sql) return _sql;
|
||||
|
||||
// Je nach Integration heißt die Variable unterschiedlich.
|
||||
const url =
|
||||
process.env.DATABASE_URL ||
|
||||
process.env.POSTGRES_URL ||
|
||||
process.env.POSTGRES_PRISMA_URL ||
|
||||
process.env.DATABASE_URL_UNPOOLED ||
|
||||
process.env.POSTGRES_URL_NON_POOLING;
|
||||
|
||||
if (!url) {
|
||||
const found = Object.keys(process.env)
|
||||
.filter(k => /POSTGRES|DATABASE|NEON/i.test(k))
|
||||
.join(', ') || 'keine';
|
||||
throw new Error(
|
||||
`Keine Datenbank-URL gefunden. Gefundene passende Variablen: ${found}. ` +
|
||||
`Im Vercel-Dashboard unter Storage eine Neon-Datenbank verbinden und neu deployen.`
|
||||
);
|
||||
}
|
||||
_sql = neon(url);
|
||||
return _sql;
|
||||
}
|
||||
|
||||
/** Als Tagged Template nutzbar: sql`SELECT ...` */
|
||||
export function sql(strings, ...values) {
|
||||
return getSql()(strings, ...values);
|
||||
}
|
||||
|
||||
/* ---------------- Antwort-Protokoll (zeilenbasiert, Pipe-getrennt) ---------------- */
|
||||
|
||||
export function textHead(res) {
|
||||
@@ -37,7 +72,6 @@ export function param(req, key) {
|
||||
let v = req.query?.[key];
|
||||
if (v === undefined && req.body) {
|
||||
if (typeof req.body === 'string') {
|
||||
// Fallback, falls Vercel den Body nicht geparst hat
|
||||
v = new URLSearchParams(req.body).get(key);
|
||||
} else {
|
||||
v = req.body[key];
|
||||
|
||||
Reference in new issue
Block a user