mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-11 06:41:02 +00:00
d17457de56
Leaving every replaced cover, place image and deleted journey photo to the nightly pass kept them publicly fetchable by URL for a week at least, and for good while deletion was off. Owners now hand the values a delete or a replace left behind to StorageReleaseService once their write committed. It asks every registered reference source, with the same parser as the nightly pass, and deletes at once what no row names any more: an object a trip copy, a journey or a saved place still shows stays, which the old inline deletes got wrong. The release holds the pass's guards (reclaimable categories at their root only, never an owner marker, never while a restore runs, never with a required source missing or an overlapping location), never fails the request and logs at debug. It runs for trip covers (update, upload, trip delete), collection covers and saved-place images, place images (update, bulk update, delete), journey covers and journey or gallery photos (their thumbnail goes with a file that went), avatars (change, delete, account deletion), trip files (permanent delete, empty trash) and collab note and chat attachments. A trip file row now goes before its bytes, so a failing backend no longer fails the delete. The objects of a deleted trip's places and files are left to the nightly pass: their rows are other domains'. PlacesService drops the collection places repository nothing read any more. Size, warning and boundary baselines follow the shrunk files.
421 lines
18 KiB
JSON
421 lines
18 KiB
JSON
{
|
|
"fileCycles": [],
|
|
"domainCycles": [
|
|
"accommodations -> assignments",
|
|
"accommodations -> nest-rpc",
|
|
"accommodations -> places",
|
|
"assignments -> days",
|
|
"assignments -> journey",
|
|
"assignments -> nest-rpc",
|
|
"atlas -> nest-rpc",
|
|
"auth -> budget",
|
|
"auth -> files",
|
|
"auth -> plugins",
|
|
"budget -> nest-rpc",
|
|
"calendar -> days",
|
|
"calendar -> reservations",
|
|
"categories -> nest-rpc",
|
|
"collab -> files",
|
|
"collab -> nest-rpc",
|
|
"collections -> nest-rpc",
|
|
"collections -> places",
|
|
"day-notes -> nest-rpc",
|
|
"days -> accommodations",
|
|
"days -> assignments",
|
|
"days -> nest-rpc",
|
|
"days -> places",
|
|
"files -> nest-rpc",
|
|
"geo -> maps",
|
|
"integrations -> assignments",
|
|
"integrations -> atlas",
|
|
"integrations -> journey",
|
|
"integrations -> places",
|
|
"integrations -> reservations",
|
|
"journey -> atlas",
|
|
"journey -> files",
|
|
"journey -> nest-rpc",
|
|
"maps -> geo",
|
|
"memories -> photos",
|
|
"nest-rpc -> plugins",
|
|
"packing -> nest-rpc",
|
|
"photos -> memories",
|
|
"places -> accommodations",
|
|
"places -> assignments",
|
|
"places -> atlas",
|
|
"places -> journey",
|
|
"places -> nest-rpc",
|
|
"plugins -> accommodations",
|
|
"plugins -> assignments",
|
|
"plugins -> atlas",
|
|
"plugins -> budget",
|
|
"plugins -> categories",
|
|
"plugins -> collab",
|
|
"plugins -> collections",
|
|
"plugins -> day-notes",
|
|
"plugins -> days",
|
|
"plugins -> files",
|
|
"plugins -> journey",
|
|
"plugins -> nest-rpc",
|
|
"plugins -> packing",
|
|
"plugins -> places",
|
|
"plugins -> reservations",
|
|
"plugins -> tags",
|
|
"plugins -> todo",
|
|
"plugins -> trips",
|
|
"plugins -> vacay",
|
|
"plugins -> weather",
|
|
"reservations -> accommodations",
|
|
"reservations -> assignments",
|
|
"reservations -> budget",
|
|
"reservations -> days",
|
|
"reservations -> integrations",
|
|
"reservations -> nest-rpc",
|
|
"tags -> nest-rpc",
|
|
"todo -> nest-rpc",
|
|
"trip-members -> auth",
|
|
"trip-members -> budget",
|
|
"trip-members -> trips",
|
|
"trip-read-model -> accommodations",
|
|
"trip-read-model -> budget",
|
|
"trip-read-model -> collab",
|
|
"trip-read-model -> days",
|
|
"trip-read-model -> files",
|
|
"trip-read-model -> packing",
|
|
"trip-read-model -> places",
|
|
"trip-read-model -> reservations",
|
|
"trip-read-model -> todo",
|
|
"trip-read-model -> trip-members",
|
|
"trip-read-model -> trips",
|
|
"trips -> accommodations",
|
|
"trips -> budget",
|
|
"trips -> calendar",
|
|
"trips -> collab",
|
|
"trips -> days",
|
|
"trips -> files",
|
|
"trips -> nest-rpc",
|
|
"trips -> packing",
|
|
"trips -> places",
|
|
"trips -> reservations",
|
|
"trips -> todo",
|
|
"trips -> trip-members",
|
|
"trips -> trip-read-model",
|
|
"trips -> vacay",
|
|
"vacay -> nest-rpc",
|
|
"weather -> nest-rpc"
|
|
],
|
|
"sharedImportsDomain": [
|
|
"nest/common/idempotency-cleanup.job.ts -> nest/audit/audit-log.logger.ts",
|
|
"nest/common/idempotency-cleanup.job.ts -> nest/scheduling/cron-registrar.service.ts",
|
|
"nest/common/rowShape.ts -> nest/query-helpers/query-helpers.service.ts",
|
|
"nest/common/validate-route-guards.ts -> nest/public-api/api-token.guard.ts"
|
|
],
|
|
"domainInternals": [
|
|
"addons -> settings/instance-api-keys.ts",
|
|
"admin -> llm-parse/llm-config.ts",
|
|
"atlas -> geo/nominatim.client.ts",
|
|
"atlas -> public-api/public-api-request.ts",
|
|
"auth -> maps/providers/places-provider.ts",
|
|
"auth -> plugins/paths.ts",
|
|
"auth -> plugins/user-erasure-enqueue.ts",
|
|
"auth -> settings/instance-api-keys.ts",
|
|
"auth -> storage/storage-upload.factory.ts",
|
|
"backup -> permissions/permissions-cache.ts",
|
|
"backup -> plugins/paths.ts",
|
|
"backup -> plugins/plugin-backup.ts",
|
|
"booking-import -> airports/airports.data.ts",
|
|
"booking-import -> llm-parse/image-input.ts",
|
|
"collab -> storage/storage-upload.factory.ts",
|
|
"collections -> places/place-image.ts",
|
|
"collections -> places/places.dto.ts",
|
|
"collections -> places/places.helpers.ts",
|
|
"collections -> storage/storage-upload.factory.ts",
|
|
"days -> accommodations/night-seat.ts",
|
|
"doc-sync -> storage/content-type.ts",
|
|
"files -> storage/content-type.ts",
|
|
"files -> storage/storage-upload.factory.ts",
|
|
"geo -> maps/maps.helpers.ts",
|
|
"integrations -> atlas/atlas-geo.ts",
|
|
"journey -> atlas/atlas-geo.ts",
|
|
"journey -> memories/photo-provider.registry.ts",
|
|
"journey -> storage/storage-upload.factory.ts",
|
|
"maps -> geo/nominatim.client.ts",
|
|
"maps -> settings/instance-api-keys.ts",
|
|
"nest-rpc -> plugins/protocol/envelope.ts",
|
|
"place-enrichment -> maps/maps.helpers.ts",
|
|
"place-enrichment -> maps/trek-places.client.ts",
|
|
"places -> atlas/atlas-geo.ts",
|
|
"places -> storage/storage-upload.factory.ts",
|
|
"plugins -> llm-parse/clients/openai-compatible.client.ts",
|
|
"plugins -> llm-parse/llm-client.factory.ts",
|
|
"plugins -> llm-parse/llm-config.resolver.ts",
|
|
"plugins -> llm-parse/llm-config.ts",
|
|
"plugins -> maps/maps.helpers.ts",
|
|
"plugins -> notifications/channel-registry.ts",
|
|
"plugins -> notifications/notification-events.ts",
|
|
"receipt-scan -> llm-parse/image-input.ts",
|
|
"reservation-import -> integrations/airtrail.dto.ts",
|
|
"reservation-import -> llm-parse/image-input.ts",
|
|
"reservations -> airports/airports.data.ts",
|
|
"roadtrip -> plugins/contributions/plugin-route-normalize.ts",
|
|
"roadtrip -> plugins/contributions/plugin-search.helpers.ts",
|
|
"roadtrip -> plugins/kill-switch.ts",
|
|
"transit -> maps/maps.helpers.ts",
|
|
"transit -> settings/instance-api-keys.ts",
|
|
"trip-members -> trips/trips.dto.ts",
|
|
"trips -> mcp-shared/prompt-args.ts",
|
|
"trips -> places/places.helpers.ts",
|
|
"trips -> storage/storage-upload.factory.ts",
|
|
"unsplash -> settings/instance-api-keys.ts"
|
|
],
|
|
"dbImportsNest": [
|
|
"db/migrations/Migration20200101010100_encrypt_any_plaintext_oidc_client_secret_left.ts -> nest/common/crypto/apiKeyCrypto.ts",
|
|
"db/migrations/Migration20200101010200_encrypt_any_plaintext_smtp_pass_left_in.ts -> nest/common/crypto/apiKeyCrypto.ts",
|
|
"db/migrations/Migration20200101010300_encrypt_any_plaintext_immich_api_key_values.ts -> nest/common/crypto/apiKeyCrypto.ts",
|
|
"db/orm.ts -> nest/database/request-context.ts",
|
|
"db/reseat-booked-nights.ts -> nest/accommodations/night-seat.ts"
|
|
],
|
|
"foreignRepositories": [
|
|
"accommodations -> BudgetItems (owned by budget)",
|
|
"accommodations -> DayAssignments (owned by assignments)",
|
|
"accommodations -> Days (owned by days)",
|
|
"accommodations -> Places (owned by places)",
|
|
"accommodations -> Reservations (owned by reservations)",
|
|
"accommodations -> RoadtripVias (owned by roadtrip)",
|
|
"addons -> AppSettings (owned by settings)",
|
|
"addons -> Users (owned by auth)",
|
|
"admin -> Addons (owned by addons)",
|
|
"admin -> AppSettings (owned by settings)",
|
|
"admin -> AuditLog (owned by audit)",
|
|
"admin -> DocumentProviders (owned by doc-sync)",
|
|
"admin -> McpTokens (owned by tokens)",
|
|
"admin -> OauthTokens (owned by oauth)",
|
|
"admin -> PhotoProviderFields (owned by addons)",
|
|
"admin -> PhotoProviders (owned by addons)",
|
|
"admin -> Places (owned by places)",
|
|
"admin -> PushSubscriptions (owned by notifications)",
|
|
"admin -> TripFiles (owned by files)",
|
|
"admin -> Trips (owned by trips)",
|
|
"admin -> Users (owned by auth)",
|
|
"airports -> ReservationEndpoints (owned by reservations)",
|
|
"airports -> Reservations (owned by reservations)",
|
|
"assignments -> Days (owned by days)",
|
|
"assignments -> Places (owned by places)",
|
|
"assignments -> RoadtripVias (owned by roadtrip)",
|
|
"assignments -> Tours (owned by tours)",
|
|
"assignments -> TripMembers (owned by trip-membership)",
|
|
"atlas -> AppSettings (owned by settings)",
|
|
"atlas -> Places (owned by places)",
|
|
"atlas -> ReservationEndpoints (owned by reservations)",
|
|
"atlas -> Trips (owned by trips)",
|
|
"audit -> Users (owned by auth)",
|
|
"auth -> AppSettings (owned by settings)",
|
|
"auth -> BudgetItems (owned by budget)",
|
|
"auth -> BudgetSettlements (owned by budget)",
|
|
"auth -> JourneyContributors (owned by journey)",
|
|
"auth -> JourneyEntries (owned by journey)",
|
|
"auth -> JourneyShareTokens (owned by journey)",
|
|
"auth -> Journeys (owned by journey)",
|
|
"auth -> McpTokens (owned by tokens)",
|
|
"auth -> OauthTokens (owned by oauth)",
|
|
"auth -> PluginUserErasureQueue (owned by plugins)",
|
|
"auth -> Plugins (owned by plugins)",
|
|
"auth -> PushSubscriptions (owned by notifications)",
|
|
"auth -> ShareTokens (owned by share)",
|
|
"auth -> TripMembers (owned by trip-membership)",
|
|
"auth -> Trips (owned by trips)",
|
|
"auth-core -> AppSettings (owned by settings)",
|
|
"auth-core -> UserSessions (owned by sessions)",
|
|
"auth-core -> Users (owned by auth)",
|
|
"auth-core -> WebauthnCredentials (owned by auth)",
|
|
"backup -> UserSessions (owned by sessions)",
|
|
"booking-import -> Days (owned by days)",
|
|
"booking-import -> Reservations (owned by reservations)",
|
|
"budget -> Places (owned by places)",
|
|
"budget -> Reservations (owned by reservations)",
|
|
"budget -> TripMembers (owned by trip-membership)",
|
|
"budget -> Trips (owned by trips)",
|
|
"calendar -> DayNotes (owned by day-notes)",
|
|
"calendar -> Days (owned by days)",
|
|
"calendar -> Reservations (owned by reservations)",
|
|
"calendar -> Trips (owned by trips)",
|
|
"collab -> Trips (owned by trips)",
|
|
"collections -> Categories (owned by categories)",
|
|
"collections -> PlaceRatings (owned by places)",
|
|
"collections -> Places (owned by places)",
|
|
"collections -> Tags (owned by tags)",
|
|
"collections -> TripMembers (owned by trip-membership)",
|
|
"collections -> Trips (owned by trips)",
|
|
"collections -> Users (owned by auth)",
|
|
"common -> Users (owned by auth)",
|
|
"day-notes -> Days (owned by days)",
|
|
"days -> DayAccommodations (owned by accommodations)",
|
|
"days -> DayAssignments (owned by assignments)",
|
|
"days -> DayNotes (owned by day-notes)",
|
|
"days -> ReservationEndpoints (owned by reservations)",
|
|
"days -> Reservations (owned by reservations)",
|
|
"days -> RoadtripDayBoundaries (owned by roadtrip)",
|
|
"days -> RoadtripVias (owned by roadtrip)",
|
|
"days -> Trips (owned by trips)",
|
|
"doc-sync -> AppSettings (owned by settings)",
|
|
"doc-sync -> FileLinks (owned by files)",
|
|
"doc-sync -> TripFiles (owned by files)",
|
|
"doc-sync -> Trips (owned by trips)",
|
|
"feeds -> Trips (owned by trips)",
|
|
"feeds -> Users (owned by auth)",
|
|
"files -> AppSettings (owned by settings)",
|
|
"files -> BudgetItems (owned by budget)",
|
|
"files -> DayAssignments (owned by assignments)",
|
|
"files -> Places (owned by places)",
|
|
"files -> Reservations (owned by reservations)",
|
|
"files -> UserSessions (owned by sessions)",
|
|
"files -> Users (owned by auth)",
|
|
"google-quota -> AppSettings (owned by settings)",
|
|
"integrations -> AppSettings (owned by settings)",
|
|
"integrations -> BucketList (owned by atlas)",
|
|
"integrations -> Days (owned by days)",
|
|
"integrations -> Places (owned by places)",
|
|
"integrations -> ReservationEndpoints (owned by reservations)",
|
|
"integrations -> Reservations (owned by reservations)",
|
|
"integrations -> Trips (owned by trips)",
|
|
"integrations -> Users (owned by auth)",
|
|
"journey -> Places (owned by places)",
|
|
"journey -> Trips (owned by trips)",
|
|
"llm-parse -> Addons (owned by addons)",
|
|
"maps -> AppSettings (owned by settings)",
|
|
"maps -> Places (owned by places)",
|
|
"maps -> Users (owned by auth)",
|
|
"mcp-shared -> Trips (owned by trips)",
|
|
"mcp-shared -> Users (owned by auth)",
|
|
"memories -> JourneyContributors (owned by journey)",
|
|
"memories -> JourneyPhotos (owned by journey)",
|
|
"memories -> Journeys (owned by journey)",
|
|
"memories -> PhotoProviders (owned by addons)",
|
|
"memories -> TrekPhotos (owned by photos)",
|
|
"memories -> TripPhotos (owned by photos)",
|
|
"memories -> Trips (owned by trips)",
|
|
"memories -> Users (owned by auth)",
|
|
"nest-rpc -> Trips (owned by trips)",
|
|
"nest-rpc -> Users (owned by auth)",
|
|
"notifications -> AppSettings (owned by settings)",
|
|
"notifications -> Settings (owned by settings)",
|
|
"notifications -> TodoItems (owned by todo)",
|
|
"notifications -> Trips (owned by trips)",
|
|
"notifications -> Users (owned by auth)",
|
|
"oidc -> AppSettings (owned by settings)",
|
|
"oidc -> InviteTokens (owned by auth)",
|
|
"oidc -> Users (owned by auth)",
|
|
"packing -> TripMembers (owned by trip-membership)",
|
|
"packing -> Trips (owned by trips)",
|
|
"permissions -> AppSettings (owned by settings)",
|
|
"permissions -> Trips (owned by trips)",
|
|
"photos -> JourneyPhotos (owned by journey)",
|
|
"place-enrichment -> AppSettings (owned by settings)",
|
|
"place-enrichment -> PlaceDetailsCache (owned by maps)",
|
|
"place-photos -> CollectionPlaces (owned by collections)",
|
|
"place-photos -> Places (owned by places)",
|
|
"place-shadow -> AppSettings (owned by settings)",
|
|
"places -> BudgetItems (owned by budget)",
|
|
"places -> Categories (owned by categories)",
|
|
"places -> DayAssignments (owned by assignments)",
|
|
"places -> Tags (owned by tags)",
|
|
"places -> TripMembers (owned by trip-membership)",
|
|
"places -> Trips (owned by trips)",
|
|
"platform -> Photos (owned by photos)",
|
|
"platform -> ShareTokens (owned by share)",
|
|
"platform -> UserSessions (owned by sessions)",
|
|
"platform -> Users (owned by auth)",
|
|
"plugins -> DayAccommodations (owned by accommodations)",
|
|
"plugins -> Days (owned by days)",
|
|
"plugins -> JourneyEntries (owned by journey)",
|
|
"plugins -> NotificationChannelPreferences (owned by notifications)",
|
|
"plugins -> Places (owned by places)",
|
|
"plugins -> Reservations (owned by reservations)",
|
|
"plugins -> Settings (owned by settings)",
|
|
"plugins -> Trips (owned by trips)",
|
|
"plugins -> UserSessions (owned by sessions)",
|
|
"plugins -> Users (owned by auth)",
|
|
"public-api -> BucketList (owned by atlas)",
|
|
"public-api -> DayNotes (owned by day-notes)",
|
|
"public-api -> Days (owned by days)",
|
|
"public-api -> Places (owned by places)",
|
|
"public-api -> Reservations (owned by reservations)",
|
|
"public-api -> Trips (owned by trips)",
|
|
"query-helpers -> AssignmentParticipants (owned by assignments)",
|
|
"query-helpers -> PlaceRatings (owned by places)",
|
|
"query-helpers -> Tags (owned by tags)",
|
|
"realtime -> AppSettings (owned by settings)",
|
|
"realtime -> Users (owned by auth)",
|
|
"reservations -> BudgetItems (owned by budget)",
|
|
"reservations -> DayAccommodations (owned by accommodations)",
|
|
"reservations -> DayAssignments (owned by assignments)",
|
|
"reservations -> Days (owned by days)",
|
|
"reservations -> Places (owned by places)",
|
|
"reservations -> TripMembers (owned by trip-membership)",
|
|
"reservations -> Trips (owned by trips)",
|
|
"reservations -> Users (owned by auth)",
|
|
"roadtrip -> DayAccommodations (owned by accommodations)",
|
|
"roadtrip -> DayAssignments (owned by assignments)",
|
|
"roadtrip -> Days (owned by days)",
|
|
"roadtrip -> Places (owned by places)",
|
|
"roadtrip -> Plugins (owned by plugins)",
|
|
"roadtrip -> ReservationDayPositions (owned by reservations)",
|
|
"roadtrip -> ReservationEndpoints (owned by reservations)",
|
|
"roadtrip -> Reservations (owned by reservations)",
|
|
"roadtrip -> Users (owned by auth)",
|
|
"route-usage -> AppSettings (owned by settings)",
|
|
"school-holidays -> VacayHolidayCalendars (owned by vacay)",
|
|
"share -> BudgetItems (owned by budget)",
|
|
"share -> Categories (owned by categories)",
|
|
"share -> CollabMessages (owned by collab)",
|
|
"share -> DayAssignments (owned by assignments)",
|
|
"share -> DayNotes (owned by day-notes)",
|
|
"share -> Days (owned by days)",
|
|
"share -> PackingItems (owned by packing)",
|
|
"share -> Places (owned by places)",
|
|
"share -> Reservations (owned by reservations)",
|
|
"share -> Trips (owned by trips)",
|
|
"storage -> AppSettings (owned by settings)",
|
|
"system-notices -> AppSettings (owned by settings)",
|
|
"system-notices -> Trips (owned by trips)",
|
|
"system-notices -> Users (owned by auth)",
|
|
"todo -> TripMembers (owned by trip-membership)",
|
|
"tokens -> Users (owned by auth)",
|
|
"tours -> Places (owned by places)",
|
|
"transit -> AppSettings (owned by settings)",
|
|
"transit -> Users (owned by auth)",
|
|
"trip-members -> TripMembers (owned by trip-membership)",
|
|
"trip-members -> Trips (owned by trips)",
|
|
"trip-members -> Users (owned by auth)",
|
|
"trip-membership -> Trips (owned by trips)",
|
|
"trip-read-model -> Trips (owned by trips)",
|
|
"trips -> AssignmentParticipants (owned by assignments)",
|
|
"trips -> BudgetCategoryOrder (owned by budget)",
|
|
"trips -> BudgetItemMembers (owned by budget)",
|
|
"trips -> BudgetItemPayers (owned by budget)",
|
|
"trips -> BudgetItems (owned by budget)",
|
|
"trips -> DayAccommodations (owned by accommodations)",
|
|
"trips -> DayAssignments (owned by assignments)",
|
|
"trips -> DayNotes (owned by day-notes)",
|
|
"trips -> Days (owned by days)",
|
|
"trips -> JourneyEntries (owned by journey)",
|
|
"trips -> PackingBags (owned by packing)",
|
|
"trips -> PackingItems (owned by packing)",
|
|
"trips -> Places (owned by places)",
|
|
"trips -> Reservations (owned by reservations)",
|
|
"trips -> RoadtripDayBoundaries (owned by roadtrip)",
|
|
"trips -> RoadtripDayTracks (owned by roadtrip)",
|
|
"trips -> RoadtripPreferences (owned by roadtrip)",
|
|
"trips -> RoadtripVias (owned by roadtrip)",
|
|
"trips -> Tags (owned by tags)",
|
|
"trips -> TodoItems (owned by todo)",
|
|
"trips -> TourWaypoints (owned by tours)",
|
|
"trips -> Tours (owned by tours)",
|
|
"trips -> TripMembers (owned by trip-membership)",
|
|
"trips -> Users (owned by auth)",
|
|
"unsplash -> AppSettings (owned by settings)",
|
|
"unsplash -> Users (owned by auth)",
|
|
"vacay -> SchoolHolidayRegions (owned by school-holidays)"
|
|
],
|
|
"providersImportOrchestrator": []
|
|
}
|