jubnl
21ade19d44
refactor(db): TrekRepository base — every repository path validates the request context and reads bypass the identity map by default
2026-09-22 22:37:49 +02:00
jubnl
8ba55bda30
fix(db): generator emits the referenced column for non-PK foreign keys; OAuth client joins through the relation; FK parity un-skipped
2026-09-22 21:53:34 +02:00
jubnl
80a0fdc4d9
fix(auth): non-numeric passkey and invite ids answer the legacy 404, never NaN; invite join type pinned
2026-09-22 21:31:46 +02:00
jubnl
d82395d0ae
refactor(oauth): OAuth server tables through repositories
...
OauthClientsRepository/OauthTokensRepository/OauthConsentsRepository
replace OauthService's raw SQL (OA1-OA33). revokeChain's recursive CTE
and the oauth_clients join (its FK actually targets client_id, not the
row id the generated relation assumes) go through em.getKysely();
OA19's chain revoke is one nativeUpdate($in); OA12's consent grant is
em.upsert on the (client, user) unique key. revokeAllForUser built now
for Task 5. Every row-out read is disableIdentityMap: true; inserts go
through em.insert.
2026-09-22 21:18:08 +02:00
jubnl
44cf31c958
fix(server): non-numeric route ids answer the legacy not-found, never NaN (tokens, categories, tags); mint path back to two statements; identity-map regression pinned
2026-09-22 21:08:06 +02:00
jubnl
8d0dddf385
fix(db): row-out repository reads bypass the identity map — stale write-back over nativeUpdate at flush; insertUser via em.insert; settings round-trip pinned
2026-09-22 20:32:35 +02:00
jubnl
e9d0cb60e0
refactor(auth): passkeys and registration invites through repositories
2026-09-22 20:25:50 +02:00
jubnl
daef15be70
refactor(tokens): MCP and API tokens through McpTokensRepository
2026-09-22 20:23:11 +02:00
jubnl
57f4e29b9a
refactor(auth): users table through UsersRepository; JWT and MFA lookups repository-backed
2026-09-22 19:39:01 +02:00
jubnl
7453c7dafa
feat(server): pre-init photo route and WS handshake run in a request context; InviteTokensRepository
2026-09-22 18:48:24 +02:00
jubnl
e98f86efba
fix(server): plan 3a re-review 2 follow-ups — absent-ORM boot branch pinned; airports boot hook never rejects; BOOT-SWEEP-001 asserts the seven routes; duplicate comment removed
2026-09-22 18:13:28 +02:00
jubnl
66703efeb7
feat(db): generated entities declare their repository type; test casts dropped
2026-09-22 18:01:45 +02:00
jubnl
46bb11f508
fix(server): plan 3a re-review follow-ups — plugin boot activation and the airports backfill inside a request context; the supervisor answers the child before failing closed; BOOT-SWEEP-001 drives the real boot hooks; ws adapter seam pinned
2026-09-22 17:39:38 +02:00
jubnl
761cd14b2b
fix(server): plan 3a review follow-ups — fail closed without an ORM at every choke point; seam and D5 ratchet tests; dead method and DDL copies removed
2026-09-22 16:54:45 +02:00
jubnl
59fa932ec8
test(server): harness constructors follow the Task 5 repository signatures; one test ORM per handle in the plugin host
2026-09-22 15:19:58 +02:00
jubnl
6763648c45
refactor(settings): user and instance settings through repositories
...
SettingsRepository (getForUser/upsertForUser/getOne/deleteForUser) replaces
the per-user settings table's raw SQL; SettingsService drops DatabaseService
entirely. instance-api-keys.ts's readInstanceApiKey/writeInstanceApiKey/
resolveApiKey take an explicit AppSettingsRepository/UsersRepository instead
of a raw connection.
An earlier version resolved those two repositories itself from the active
MikroORM request context, so none of its six callers needed to change. That
worked in production and e2e (always inside a real request) but broke
service construction in plain unit tests across every calling domain
(addons, auth x2, maps, transit, unsplash - 185 failures on a full run),
since none of them wrap a request context. Each of those six services now
injects its own AppSettingsRepository/UsersRepository and passes them
through explicitly, matching how every other converted repository in this
migration is consumed; their own SQL is untouched (outside Plan 3a).
2026-09-22 15:08:49 +02:00
jubnl
6db91c8bf3
refactor(addons): addon catalog and photo providers through repositories
2026-09-22 14:06:57 +02:00
jubnl
aa1067035f
refactor(categories, tags): repositories replace raw SQL
2026-09-22 13:54:13 +02:00
jubnl
e9391a9ae1
fix(server): non-HTTP entrypoints run inside an ORM request context; permission loads fail closed on context errors
2026-09-22 13:25:17 +02:00
jubnl
86c558cdd6
fix(audit): audit rows are native inserts, not a unit-of-work flush; closed test ORMs
2026-09-22 12:56:03 +02:00
jubnl
c2da9d62f7
refactor(audit): audit log writes through AuditLogRepository
2026-09-22 12:34:49 +02:00
jubnl
7908914345
refactor(permissions): permission flags through AppSettingsRepository
2026-09-22 12:30:20 +02:00
jubnl
f460ae4fcb
feat(db): AppSettings and Users repositories; forFeature wiring pattern
2026-09-22 12:06:13 +02:00
jubnl
ae2af05cad
fix(server): phase 1 review follow-ups — awaited returns, logged upload-filter rejections, covered handshake/notice branches, call-graph gate in CI, dead test imports
2026-09-22 07:54:09 +02:00
jubnl
39a6d991ce
refactor(server): remove DatabaseService.transaction — every transaction runs through UnitOfWork
2026-09-22 06:39:38 +02:00
jubnl
a0f50c8316
refactor(trip-read-model, trips, feeds): async DB-touching methods; transactions through UnitOfWork
2026-09-22 06:30:13 +02:00
jubnl
869d139412
refactor(reservations, booking-import, calendar, integrations, roadtrip): async DB-touching methods; transactions through UnitOfWork
2026-09-22 06:11:41 +02:00
jubnl
571df42bed
refactor(trips): rewrite AccommodationsService.createAccommodation .bind alias
...
Recipe R4 trap named in the Task 12 brief: a .bind alias of an
AssignmentsService/AccommodationsService method is typed any and hides a
missing await from tsc and the promise lint rules. createAccommodation
belongs to this task's group, so rewritten as an arrow forwarding to the
method instead of a bound reference.
2026-09-22 05:22:51 +02:00
jubnl
5c8decd3ea
refactor(assignments, public-api, accommodations, places): async DB-touching methods; transactions through UnitOfWork
2026-09-22 05:21:48 +02:00
jubnl
3a8b54d761
fix(server): the journey hooks are awaited by their callers, not detached
2026-09-22 04:38:12 +02:00
jubnl
845320e0a4
refactor(journey, oidc, place-enrichment, tokens, trip-members): async DB-touching methods; transactions through UnitOfWork
2026-09-22 04:16:07 +02:00
jubnl
ad6e1ce8f0
fix(vacay): type the loop accumulators the async sweep introduced
2026-09-22 03:44:48 +02:00
jubnl
cb177ce655
refactor(vacay, admin, doc-sync): async DB-touching methods; transactions through UnitOfWork
2026-09-22 03:29:33 +02:00
jubnl
567593a259
chore(server): lint rule also refuses a Promise handed to expect() without resolves/rejects
2026-09-22 02:32:59 +02:00
jubnl
37992de7ab
refactor(memories, photos, packing, share): async DB-touching methods; transactions through UnitOfWork
2026-09-22 02:21:06 +02:00
jubnl
6b755314d8
refactor(collab, collections, maps): async DB-touching methods; transactions through UnitOfWork
2026-09-22 01:49:18 +02:00
jubnl
fdb12aed1e
test(files): upload filters fail closed on an excluded or unresolvable type
2026-09-22 01:21:57 +02:00
jubnl
fc49c0c768
refactor(tokens): async DB-touching methods; the auth token handlers await them
2026-09-22 01:21:29 +02:00
jubnl
4700bb38a5
test(server): suites await the methods earlier sweep groups made async
2026-09-22 01:16:50 +02:00
jubnl
7940b7ff84
refactor(auth, files): async DB-touching methods; transactions through UnitOfWork
2026-09-22 01:08:22 +02:00
jubnl
4df2d83137
refactor(notifications, place-photos, backup): async DB-touching methods; transactions through UnitOfWork
2026-09-22 00:22:11 +02:00
jubnl
e28dc6de28
refactor(plugins): async DB-touching methods; transactions through UnitOfWork
2026-09-22 00:00:53 +02:00
jubnl
e413308227
refactor(llm-parse, mcp-shared, oauth, place-shadow, route-usage, storage, todo, trip-invite): async DB-touching methods; transactions through UnitOfWork
2026-09-21 23:27:01 +02:00
jubnl
7daf98cf70
test(oauth): controller suite awaits the async service
2026-09-21 22:41:35 +02:00
jubnl
aa587e2fb6
refactor(budget, common, day-notes, days): async DB-touching methods; transactions through UnitOfWork
2026-09-21 22:39:11 +02:00
jubnl
8bdc730b20
test(server): suites await the methods Task 1's forced edits made async
2026-09-21 21:54:19 +02:00
jubnl
953e2526bb
refactor(atlas, school-holidays, settings): async DB-touching methods; transactions through UnitOfWork
2026-09-21 21:23:10 +02:00
jubnl
f6c17938c3
test(doc-sync): unit suites await the methods the async sweep made async
2026-09-21 21:11:01 +02:00
jubnl
0cf99a9939
refactor(realtime, systemNotices, addons, airports, audit, categories, permissions, query-helpers, tags, transit, trip-membership): async DB-touching methods; transactions through UnitOfWork
2026-09-21 20:48:03 +02:00
jubnl
27d044f9e8
chore(server): promise safety net and sweep tooling for the async migration
2026-09-21 19:01:38 +02:00