Analytics: Annahme gehaertet
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8b107019c3
commit
6233850bb3
4 files changed
+164
-22
No files matched your search
@@ -55,9 +55,9 @@ function validateSite(b) {
|
||||
return { site: { projectId: b.projectId, domains: b.domains, active: b.active } };
|
||||
}
|
||||
|
||||
function createHandlerServer({ config, db, role, geo, salt, now }) {
|
||||
function createHandlerServer({ config, db, role, geo, salt, now, onSitesChanged }) {
|
||||
const ingest = role === 'public' ? createIngest({ db, geo, salt: salt || createSalt({ now }), now }) : null;
|
||||
return http.createServer(async (req, res) => {
|
||||
const server = http.createServer(async (req, res) => {
|
||||
try {
|
||||
const url = new URL(req.url, 'http://x');
|
||||
const parts = url.pathname.split('/').filter(Boolean);
|
||||
@@ -85,6 +85,7 @@ function createHandlerServer({ config, db, role, geo, salt, now }) {
|
||||
db.exec('ROLLBACK');
|
||||
throw e;
|
||||
}
|
||||
onSitesChanged?.();
|
||||
return send(res, 200, { ok: true });
|
||||
}
|
||||
const v = validateSite(await readJson(req, MAX_ADMIN_BODY));
|
||||
@@ -96,6 +97,7 @@ function createHandlerServer({ config, db, role, geo, salt, now }) {
|
||||
ON CONFLICT(siteKey) DO UPDATE SET projectId = excluded.projectId, domains = excluded.domains,
|
||||
active = excluded.active, offSince = excluded.offSince`)
|
||||
.run(key, projectId, JSON.stringify(domains), active ? 1 : 0, offSince);
|
||||
onSitesChanged?.();
|
||||
return send(res, 200, { ok: true });
|
||||
}
|
||||
return send(res, 404, { error: 'Nicht gefunden' });
|
||||
@@ -105,9 +107,12 @@ function createHandlerServer({ config, db, role, geo, salt, now }) {
|
||||
if (!res.headersSent) send(res, status, { error: status === 500 ? 'Interner Fehler' : e.message });
|
||||
}
|
||||
});
|
||||
server.invalidateSites = ingest ? ingest.invalidateSites : () => {};
|
||||
return server;
|
||||
}
|
||||
|
||||
// Öffentlicher Listener: /a/health und /a/e (Erfassung); Admin-Routen gibt es hier nicht.
|
||||
export const createPublicServer = ({ config, db, geo, salt, now }) => createHandlerServer({ config, db, role: 'public', geo, salt, now });
|
||||
// Interner Listener für die Website-Verwaltung.
|
||||
export const createAdminServer = ({ config, db }) => createHandlerServer({ config, db, role: 'admin' });
|
||||
// onSitesChanged: wird nach jeder Änderung an Websites gerufen (public.invalidateSites()).
|
||||
export const createAdminServer = ({ config, db, onSitesChanged }) => createHandlerServer({ config, db, role: 'admin', onSitesChanged });
|
||||
Reference in new issue
Block a user