mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-07-14 18:15:56 -04:00
- Block all non-health API requests with 503 while a database restore is in progress (`withDatabaseAccessBlocked` in `@sofa/db/client`); pause and resume cron jobs around the restore window - Replace the two-hook first-user admin promotion with an atomic `claimInitialAdmin` query that uses a DB-level unique constraint so concurrent sign-ups during the first-run window can't each see `userCount === 0` - Fix `refreshAvailability` to always call `replaceAvailabilityTransaction` (clearing stale rows) even when TMDB returns no US providers, instead of returning early and leaving old data in place - Fix `performUpdateCheck` to read `release_url` (snake_case) from the public API response instead of `releaseUrl` - Fix `createJob` import handler to catch `SQLITE_CONSTRAINT_UNIQUE` and surface it as an `IMPORT_ALREADY_RUNNING` conflict error instead of a 500 - Relax public API telemetry schema to accept `string | number` for `users` and `titles` fields - Add tests for availability clearing, import deduplication, and `claimInitialAdmin`
21 lines
479 B
TypeScript
21 lines
479 B
TypeScript
import { afterEach, mock } from "bun:test";
|
|
|
|
import { applyMigrations, testDb } from "@sofa/db/test-utils";
|
|
|
|
process.env.LOG_LEVEL ??= "error";
|
|
|
|
mock.module("@sofa/db/client", () => ({
|
|
db: testDb,
|
|
optimizeDatabase: () => {},
|
|
vacuumDatabase: () => {},
|
|
closeDatabase: () => {},
|
|
isDatabaseAccessBlocked: () => false,
|
|
withDatabaseAccessBlocked: async (fn: () => Promise<unknown> | unknown) => await fn(),
|
|
}));
|
|
|
|
applyMigrations();
|
|
|
|
afterEach(() => {
|
|
mock.restore();
|
|
});
|