Quelle anlegen, Verbindung testen, nach Zeitplan oder auf Knopfdruck abgleichen. Gelesen wird seitenweise mit searchPaginated, objectGUID kommt als Puffer und wird gemischt-endian zur GUID umsortiert. Wer im Verzeichnis verschwindet, wird hier inaktiv und nie geloescht. Drei Regeln verhindern, dass eine kaputte Eingabe wie "alle sind gegangen" aussieht: laesst sich kein einziger Eintrag zuordnen, wird niemand deaktiviert; uebersprungene Eintraege werden am dn erkannt und ausgenommen; eine von Hand angelegte Person wird uebernommen statt verdoppelt. Der Zeitplan laeuft ueber node-cron im selben Prozess, gestartet aus src/instrumentation.ts, und nimmt keine eigene Sperre - die liegt in der Datenbank, damit zwei Instanzen sich einig sind. Closes #16 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
18 lines
672 B
TypeScript
18 lines
672 B
TypeScript
import "dotenv/config";
|
|
|
|
// Tests laufen immer gegen die Testdatenbank, nie gegen die Entwicklungsdatenbank.
|
|
if (process.env["TEST_DATABASE_URL"]) {
|
|
process.env["DATABASE_URL"] = process.env["TEST_DATABASE_URL"];
|
|
}
|
|
|
|
// Fuer Tests, die ein Geheimnis brauchen, ohne eine .env zu verlangen.
|
|
process.env["APP_SECRET"] ??= "test-geheimnis-mit-mindestens-32-zeichen-laenge";
|
|
|
|
/*
|
|
* Kein tickender Zeitplan in Tests (#016). Er wird zwar nur ueber
|
|
* `src/instrumentation.ts` gestartet, also gar nicht von Vitest — aber wer
|
|
* hier einen Dienst importiert, der ihn seinerseits startet, saehe sonst
|
|
* Abgleiche mitten im Testlauf.
|
|
*/
|
|
process.env["ZEITPLAN_AKTIV"] = "false";
|