1// backend/utils/builderKey.js
2const crypto = require("crypto");
3const redis = require("../utils/redis");
5const KEY_PREFIX = "builder:key:";
6const KEY_TTL = 60 * 60 * 24 * 7; // 7 days
8// ------------------------------------------------------
9// Generate a new 72-char builder key
10// ------------------------------------------------------
14function generateBuilderKey() {
15 return crypto.randomBytes(36).toString("base64url");
18// ------------------------------------------------------
20// ------------------------------------------------------
26async function saveBuilderKey(key, data) {
27 await redis.setex(KEY_PREFIX + key, KEY_TTL, JSON.stringify(data));
30// ------------------------------------------------------
32// ------------------------------------------------------
37async function loadBuilderKey(key) {
38 const raw = await redis.get(KEY_PREFIX + key);
39 if (!raw) return null;
40 return JSON.parse(raw);
43// ------------------------------------------------------
44// Touch TTL when polling download-status
45// ------------------------------------------------------
50async function refreshBuilderKeyTTL(key) {
51 await redis.expire(KEY_PREFIX + key, KEY_TTL);