docs(server): name the query API per statement shape and hold QueryBuilder calls to a baseline

server/CLAUDE.md now says which API new repository code uses: Kysely for join, aggregate and set-based statements, the entity methods for single-table CRUD, no new QueryBuilder calls. The TrekRepository docstring no longer calls Kysely an escape hatch. lint:query-api counts this.qb()/createQueryBuilder() per repository file against a baseline that may only shrink and runs in the server CI job.

The same file documents the JSON column and timestamp rules from the two changes before.
This commit is contained in:
Maurice
2026-10-10 12:21:12 +02:00
parent 91deedae8b
commit 4a3c97e500
9 changed files with 343 additions and 15 deletions
+49
View File
@@ -0,0 +1,49 @@
{
"counts": {
"src/db/repositories/_shared/packing-visibility.ts": 1,
"src/db/repositories/_shared/reservation-travelers-owns.ts": 1,
"src/db/repositories/AssignmentParticipants.repository.ts": 3,
"src/db/repositories/BudgetItems.repository.ts": 1,
"src/db/repositories/Categories.repository.ts": 1,
"src/db/repositories/CollabMessageReactions.repository.ts": 2,
"src/db/repositories/CollabPollVotes.repository.ts": 1,
"src/db/repositories/DawarichConnections.repository.ts": 4,
"src/db/repositories/DawarichVisitSuggestions.repository.ts": 4,
"src/db/repositories/DayAccommodations.repository.ts": 12,
"src/db/repositories/DayAssignments.repository.ts": 20,
"src/db/repositories/DayNotes.repository.ts": 6,
"src/db/repositories/Days.repository.ts": 7,
"src/db/repositories/InviteTokens.repository.ts": 3,
"src/db/repositories/JourneyBooks.repository.ts": 3,
"src/db/repositories/JourneyContributors.repository.ts": 3,
"src/db/repositories/JourneyEntries.repository.ts": 9,
"src/db/repositories/JourneyPhotos.repository.ts": 6,
"src/db/repositories/Journeys.repository.ts": 4,
"src/db/repositories/JourneyShareTokens.repository.ts": 4,
"src/db/repositories/JourneyTrips.repository.ts": 1,
"src/db/repositories/McpTokens.repository.ts": 5,
"src/db/repositories/OauthTokens.repository.ts": 3,
"src/db/repositories/PlaceRatings.repository.ts": 1,
"src/db/repositories/Places.repository.ts": 28,
"src/db/repositories/PlaceShadowPicks.repository.ts": 3,
"src/db/repositories/PushSubscriptions.repository.ts": 1,
"src/db/repositories/ReservationDayPositions.repository.ts": 1,
"src/db/repositories/ReservationEndpoints.repository.ts": 5,
"src/db/repositories/Reservations.repository.ts": 14,
"src/db/repositories/ReservationTravelers.repository.ts": 2,
"src/db/repositories/RoadtripDayBoundaries.repository.ts": 3,
"src/db/repositories/RoadtripDayTracks.repository.ts": 1,
"src/db/repositories/RoadtripPreferences.repository.ts": 1,
"src/db/repositories/RoadtripVias.repository.ts": 6,
"src/db/repositories/Tags.repository.ts": 3,
"src/db/repositories/TodoItems.repository.ts": 2,
"src/db/repositories/TripDocumentLinks.repository.ts": 5,
"src/db/repositories/TripInviteTokens.repository.ts": 4,
"src/db/repositories/TripMembers.repository.ts": 8,
"src/db/repositories/TripPhotos.repository.ts": 1,
"src/db/repositories/Trips.repository.ts": 14,
"src/db/repositories/Users.repository.ts": 1,
"src/db/repositories/VacayPlanMembers.repository.ts": 3,
"src/db/repositories/VacayShares.repository.ts": 2
}
}