fix(db): generator names relation properties in captured UNIQUE constraints

This commit is contained in:
jubnl
2026-09-22 15:46:46 +02:00
parent 59fa932ec8
commit 570a6ede85
52 changed files with 171 additions and 96 deletions
@@ -14,7 +14,7 @@ export class AssignmentParticipants {
export const AssignmentParticipantsSchema = defineEntity({
class: AssignmentParticipants,
repository: () => AssignmentParticipantsRepository,
uniques: [{ properties: ['assignment_id', 'user_id'] }],
uniques: [{ properties: ['assignment', 'user'] }],
properties: {
id: p.integer().primary(),
assignment: () => p.manyToOne(DayAssignments).ref().hidden().index('idx_assignment_participants_assignment'),
@@ -13,7 +13,7 @@ export class BudgetCategoryOrder {
export const BudgetCategoryOrderSchema = defineEntity({
class: BudgetCategoryOrder,
repository: () => BudgetCategoryOrderRepository,
uniques: [{ properties: ['trip_id', 'category'] }],
uniques: [{ properties: ['trip', 'category'] }],
properties: {
trip: () => p.manyToOne(Trips).primary().ref().deleteRule('cascade').hidden(),
trip_id: p.integer().persist(false),
@@ -16,7 +16,7 @@ export class BudgetItemMembers {
export const BudgetItemMembersSchema = defineEntity({
class: BudgetItemMembers,
repository: () => BudgetItemMembersRepository,
uniques: [{ properties: ['budget_item_id', 'user_id'] }],
uniques: [{ properties: ['budgetItem', 'user'] }],
properties: {
id: p.integer().primary(),
budgetItem: () => p.manyToOne(BudgetItems).ref().deleteRule('cascade').hidden().index('idx_budget_item_members_item'),
@@ -15,7 +15,7 @@ export class BudgetItemPayers {
export const BudgetItemPayersSchema = defineEntity({
class: BudgetItemPayers,
repository: () => BudgetItemPayersRepository,
uniques: [{ properties: ['budget_item_id', 'user_id'] }],
uniques: [{ properties: ['budgetItem', 'user'] }],
properties: {
id: p.integer().primary(),
budgetItem: () => p.manyToOne(BudgetItems).ref().deleteRule('cascade').hidden().index('idx_budget_item_payers_item'),
@@ -17,7 +17,7 @@ export class CollabMessageReactions {
export const CollabMessageReactionsSchema = defineEntity({
class: CollabMessageReactions,
repository: () => CollabMessageReactionsRepository,
uniques: [{ properties: ['message_id', 'user_id', 'emoji'] }],
uniques: [{ properties: ['message', 'user', 'emoji'] }],
properties: {
id: p.integer().primary(),
message: () => p.manyToOne(CollabMessages).ref().deleteRule('cascade').hidden().index('idx_collab_reactions_msg'),
@@ -17,7 +17,7 @@ export class CollabPollVotes {
export const CollabPollVotesSchema = defineEntity({
class: CollabPollVotes,
repository: () => CollabPollVotesRepository,
uniques: [{ properties: ['poll_id', 'user_id', 'option_index'] }],
uniques: [{ properties: ['poll', 'user', 'option_index'] }],
properties: {
id: p.integer().primary(),
poll: () => p.manyToOne(CollabPolls).ref().deleteRule('cascade').hidden(),
@@ -18,7 +18,7 @@ export class CollectionMembers {
export const CollectionMembersSchema = defineEntity({
class: CollectionMembers,
repository: () => CollectionMembersRepository,
uniques: [{ properties: ['collection_id', 'user_id'] }],
uniques: [{ properties: ['collection', 'user'] }],
properties: {
id: p.integer().primary(),
collection: () => p.manyToOne(Collections).ref().deleteRule('cascade').hidden(),
@@ -17,7 +17,7 @@ export class CollectionPlaceRatings {
export const CollectionPlaceRatingsSchema = defineEntity({
class: CollectionPlaceRatings,
repository: () => CollectionPlaceRatingsRepository,
uniques: [{ properties: ['collection_place_id', 'user_id'] }],
uniques: [{ properties: ['collectionPlace', 'user'] }],
properties: {
id: p.integer().primary(),
collectionPlace: () => p.manyToOne(CollectionPlaces).ref().deleteRule('cascade').hidden().index('idx_collection_place_ratings_place'),
@@ -48,7 +48,7 @@ export const DawarichVisitSuggestionsSchema = defineEntity({
properties: ['user_id', 'state'],
},
],
uniques: [{ properties: ['user_id', 'source_visit_id'] }],
uniques: [{ properties: ['user', 'source_visit_id'] }],
properties: {
id: p.integer().primary(),
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden(),
+1 -1
View File
@@ -34,7 +34,7 @@ export class Days {
export const DaysSchema = defineEntity({
class: Days,
repository: () => DaysRepository,
uniques: [{ properties: ['trip_id', 'day_number'] }],
uniques: [{ properties: ['trip', 'day_number'] }],
properties: {
id: p.integer().primary(),
trip: () => p.manyToOne(Trips).ref().deleteRule('cascade').hidden().index('idx_days_trip_id'),
@@ -30,7 +30,7 @@ export class DocumentConnections {
export const DocumentConnectionsSchema = defineEntity({
class: DocumentConnections,
repository: () => DocumentConnectionsRepository,
uniques: [{ properties: ['trip_id', 'provider_id'] }],
uniques: [{ properties: ['trip', 'provider'] }],
properties: {
id: p.integer().primary(),
trip: () => p.manyToOne(Trips).ref().deleteRule('cascade').hidden().index('idx_document_connections_trip'),
@@ -19,7 +19,7 @@ export class DocumentProviderFields {
export const DocumentProviderFieldsSchema = defineEntity({
class: DocumentProviderFields,
repository: () => DocumentProviderFieldsRepository,
uniques: [{ properties: ['provider_id', 'field_key'] }],
uniques: [{ properties: ['provider', 'field_key'] }],
properties: {
id: p.integer().primary(),
provider: () => p.manyToOne(DocumentProviders).ref().deleteRule('cascade').hidden(),
+3 -3
View File
@@ -30,9 +30,9 @@ export const FileLinksSchema = defineEntity({
name: 'idx_file_links_file_budget',
properties: ['file_id', 'budget_item_id'],
},
{ properties: ['file_id', 'place_id'] },
{ properties: ['file_id', 'assignment_id'] },
{ properties: ['file_id', 'reservation_id'] },
{ properties: ['file', 'place'] },
{ properties: ['file', 'assignment'] },
{ properties: ['file', 'reservation'] },
],
properties: {
id: p.integer().primary(),
@@ -14,7 +14,7 @@ export class HiddenCountries {
export const HiddenCountriesSchema = defineEntity({
class: HiddenCountries,
repository: () => HiddenCountriesRepository,
uniques: [{ properties: ['user_id', 'country_code'] }],
uniques: [{ properties: ['user', 'country_code'] }],
properties: {
id: p.integer().primary(),
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden().index('idx_hidden_countries_user'),
@@ -15,7 +15,7 @@ export class HiddenRegions {
export const HiddenRegionsSchema = defineEntity({
class: HiddenRegions,
repository: () => HiddenRegionsRepository,
uniques: [{ properties: ['user_id', 'region_code'] }],
uniques: [{ properties: ['user', 'region_code'] }],
properties: {
id: p.integer().primary(),
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden().index('idx_hidden_regions_user'),
@@ -17,7 +17,7 @@ export class IdempotencyKeys {
export const IdempotencyKeysSchema = defineEntity({
class: IdempotencyKeys,
repository: () => IdempotencyKeysRepository,
uniques: [{ properties: ['key', 'user_id', 'method', 'path'] }],
uniques: [{ properties: ['key', 'user', 'method', 'path'] }],
properties: {
key: p.text().primary(),
user: () => p.manyToOne(Users).primary().ref().deleteRule('cascade').hidden(),
@@ -17,7 +17,7 @@ export class JourneyContributors {
export const JourneyContributorsSchema = defineEntity({
class: JourneyContributors,
repository: () => JourneyContributorsRepository,
uniques: [{ properties: ['journey_id', 'user_id'] }],
uniques: [{ properties: ['journey', 'user'] }],
properties: {
journey: () => p.manyToOne(Journeys).primary().ref().hidden(),
journey_id: p.integer().persist(false),
@@ -16,7 +16,7 @@ export class JourneyEntryPhotos {
export const JourneyEntryPhotosSchema = defineEntity({
class: JourneyEntryPhotos,
repository: () => JourneyEntryPhotosRepository,
uniques: [{ properties: ['entry_id', 'journey_photo_id'] }],
uniques: [{ properties: ['entry', 'journeyPhoto'] }],
properties: {
entry: () => p.manyToOne(JourneyEntries).primary().ref().hidden().index('idx_journey_entry_photos_entry'),
entry_id: p.integer().persist(false).index('idx_journey_entry_photos_entry'),
@@ -23,7 +23,7 @@ export class JourneyPhotos {
export const JourneyPhotosSchema = defineEntity({
class: JourneyPhotos,
repository: () => JourneyPhotosRepository,
uniques: [{ properties: ['journey_id', 'photo_id'] }],
uniques: [{ properties: ['journey', 'photo'] }],
properties: {
id: p.integer().primary(),
journey: () => p.manyToOne(Journeys).ref().deleteRule('cascade').hidden().index('idx_journey_photos_journey'),
@@ -15,7 +15,7 @@ export class JourneyTrips {
export const JourneyTripsSchema = defineEntity({
class: JourneyTrips,
repository: () => JourneyTripsRepository,
uniques: [{ properties: ['journey_id', 'trip_id'] }],
uniques: [{ properties: ['journey', 'trip'] }],
properties: {
journey: () => p.manyToOne(Journeys).primary().ref().hidden().index('idx_journey_trips_journey'),
journey_id: p.integer().persist(false).index('idx_journey_trips_journey'),
@@ -14,7 +14,7 @@ export class NotificationChannelPreferences {
export const NotificationChannelPreferencesSchema = defineEntity({
class: NotificationChannelPreferences,
repository: () => NotificationChannelPreferencesRepository,
uniques: [{ properties: ['user_id', 'event_type', 'channel'] }],
uniques: [{ properties: ['user', 'event_type', 'channel'] }],
properties: {
user: () => p.manyToOne(Users).primary().ref().deleteRule('cascade').hidden().index('idx_ncp_user'),
user_id: p.integer().persist(false).index('idx_ncp_user'),
@@ -17,7 +17,7 @@ export class OauthConsents {
export const OauthConsentsSchema = defineEntity({
class: OauthConsents,
repository: () => OauthConsentsRepository,
uniques: [{ properties: ['client_id', 'user_id'] }],
uniques: [{ properties: ['client', 'user'] }],
properties: {
id: p.integer().primary(),
client: () => p.manyToOne(OauthClients).ref().name('client_id').deleteRule('cascade').hidden(),
@@ -15,7 +15,7 @@ export class PackingCategoryAssignees {
export const PackingCategoryAssigneesSchema = defineEntity({
class: PackingCategoryAssignees,
repository: () => PackingCategoryAssigneesRepository,
uniques: [{ properties: ['trip_id', 'category_name', 'user_id'] }],
uniques: [{ properties: ['trip', 'category_name', 'user'] }],
properties: {
id: p.integer().primary(),
trip: () => p.manyToOne(Trips).ref().deleteRule('cascade').hidden(),
@@ -17,7 +17,7 @@ export class PackingItemContributors {
export const PackingItemContributorsSchema = defineEntity({
class: PackingItemContributors,
repository: () => PackingItemContributorsRepository,
uniques: [{ properties: ['item_id', 'user_id'] }],
uniques: [{ properties: ['item', 'user'] }],
properties: {
item: () => p.manyToOne(PackingItems).primary().ref().hidden(),
item_id: p.integer().persist(false),
@@ -21,7 +21,7 @@ export class PhotoProviderFields {
export const PhotoProviderFieldsSchema = defineEntity({
class: PhotoProviderFields,
repository: () => PhotoProviderFieldsRepository,
uniques: [{ properties: ['provider_id', 'field_key'] }],
uniques: [{ properties: ['provider', 'field_key'] }],
properties: {
id: p.integer().primary(),
provider: () => p.manyToOne(PhotoProviders).ref().deleteRule('cascade').hidden(),
@@ -17,7 +17,7 @@ export class PlaceRatings {
export const PlaceRatingsSchema = defineEntity({
class: PlaceRatings,
repository: () => PlaceRatingsRepository,
uniques: [{ properties: ['place_id', 'user_id'] }],
uniques: [{ properties: ['place', 'user'] }],
properties: {
id: p.integer().primary(),
place: () => p.manyToOne(Places).ref().deleteRule('cascade').hidden().index('idx_place_ratings_place'),
@@ -15,7 +15,7 @@ export class ReservationDayPositions {
export const ReservationDayPositionsSchema = defineEntity({
class: ReservationDayPositions,
repository: () => ReservationDayPositionsRepository,
uniques: [{ properties: ['reservation_id', 'day_id'] }],
uniques: [{ properties: ['reservation', 'day'] }],
properties: {
reservation: () => p.manyToOne(Reservations).primary().ref().hidden(),
reservation_id: p.integer().persist(false),
@@ -14,7 +14,7 @@ export class ReservationTravelers {
export const ReservationTravelersSchema = defineEntity({
class: ReservationTravelers,
repository: () => ReservationTravelersRepository,
uniques: [{ properties: ['reservation_id', 'user_id'] }],
uniques: [{ properties: ['reservation', 'user'] }],
properties: {
id: p.integer().primary(),
reservation: () => p.manyToOne(Reservations).ref().hidden().index('idx_reservation_travelers_res'),
@@ -18,7 +18,7 @@ export class RoadtripDayBoundaries {
export const RoadtripDayBoundariesSchema = defineEntity({
class: RoadtripDayBoundaries,
repository: () => RoadtripDayBoundariesRepository,
uniques: [{ properties: ['trip_id', 'day_number'] }],
uniques: [{ properties: ['trip', 'day_number'] }],
checks: [
{
name: 'roadtrip_day_boundaries_fraction_check',
@@ -13,7 +13,7 @@ export class RoadtripPreferences {
export const RoadtripPreferencesSchema = defineEntity({
class: RoadtripPreferences,
repository: () => RoadtripPreferencesRepository,
uniques: [{ properties: ['trip_id', 'key'] }],
uniques: [{ properties: ['trip', 'key'] }],
properties: {
trip: () => p.manyToOne(Trips).primary().ref().deleteRule('cascade').hidden(),
trip_id: p.integer().persist(false),
@@ -15,7 +15,7 @@ export class SchoolHolidayRegions {
export const SchoolHolidayRegionsSchema = defineEntity({
class: SchoolHolidayRegions,
repository: () => SchoolHolidayRegionsRepository,
uniques: [{ properties: ['country', 'name'] }],
uniques: [{ properties: ['countryRef', 'name'] }],
properties: {
id: p.integer().primary(),
country: p.text().persist(false),
+1 -1
View File
@@ -13,7 +13,7 @@ export class Settings {
export const SettingsSchema = defineEntity({
class: Settings,
repository: () => SettingsRepository,
uniques: [{ properties: ['user_id', 'key'] }],
uniques: [{ properties: ['user', 'key'] }],
properties: {
id: p.integer().primary(),
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden(),
@@ -15,7 +15,7 @@ export class TodoCategoryAssignees {
export const TodoCategoryAssigneesSchema = defineEntity({
class: TodoCategoryAssignees,
repository: () => TodoCategoryAssigneesRepository,
uniques: [{ properties: ['trip_id', 'category_name', 'user_id'] }],
uniques: [{ properties: ['trip', 'category_name', 'user'] }],
properties: {
id: p.integer().primary(),
trip: () => p.manyToOne(Trips).ref().deleteRule('cascade').hidden(),
@@ -24,7 +24,7 @@ export class TripAlbumLinks {
export const TripAlbumLinksSchema = defineEntity({
class: TripAlbumLinks,
repository: () => TripAlbumLinksRepository,
uniques: [{ properties: ['trip_id', 'user_id', 'provider', 'album_id'] }],
uniques: [{ properties: ['trip', 'user', 'provider', 'album_id'] }],
properties: {
id: p.integer().primary(),
trip: () => p.manyToOne(Trips).ref().deleteRule('cascade').hidden().index('idx_trip_album_links_trip'),
@@ -52,7 +52,7 @@ export const TripDocumentLinksSchema = defineEntity({
where: 'webhook_token IS NOT NULL',
properties: ['webhook_token'],
},
{ properties: ['trip_id', 'connection_id', 'remote_scope_key'] },
{ properties: ['trip', 'connection', 'remote_scope_key'] },
],
properties: {
id: p.integer().primary(),
@@ -18,7 +18,7 @@ export class TripInviteTokens {
export const TripInviteTokensSchema = defineEntity({
class: TripInviteTokens,
repository: () => TripInviteTokensRepository,
uniques: [{ properties: ['token'] }, { properties: ['trip_id'] }],
uniques: [{ properties: ['token'] }, { properties: ['trip'] }],
properties: {
id: p.integer().primary(),
trip: () => p.manyToOne(Trips).ref().deleteRule('cascade').hidden(),
+1 -1
View File
@@ -18,7 +18,7 @@ export class TripMembers {
export const TripMembersSchema = defineEntity({
class: TripMembers,
repository: () => TripMembersRepository,
uniques: [{ properties: ['trip_id', 'user_id'] }],
uniques: [{ properties: ['trip', 'user'] }],
properties: {
id: p.integer().primary(),
trip: () => p.manyToOne(Trips).ref().deleteRule('cascade').hidden().index('idx_trip_members_trip_id'),
+1 -1
View File
@@ -23,7 +23,7 @@ export class TripPhotos {
export const TripPhotosSchema = defineEntity({
class: TripPhotos,
repository: () => TripPhotosRepository,
uniques: [{ properties: ['trip_id', 'user_id', 'photo_id'] }],
uniques: [{ properties: ['trip', 'user', 'photo'] }],
properties: {
id: p.integer().primary(),
trip: () => p.manyToOne(Trips).ref().deleteRule('cascade').hidden().index('idx_trip_photos_trip'),
@@ -14,7 +14,7 @@ export class UserNoticeDismissals {
export const UserNoticeDismissalsSchema = defineEntity({
class: UserNoticeDismissals,
repository: () => UserNoticeDismissalsRepository,
uniques: [{ properties: ['user_id', 'notice_id'] }],
uniques: [{ properties: ['user', 'notice_id'] }],
properties: {
user: () => p.manyToOne(Users).primary().ref().deleteRule('cascade').hidden(),
user_id: p.integer().persist(false),
@@ -13,7 +13,7 @@ export class VacayCompanyHolidays {
export const VacayCompanyHolidaysSchema = defineEntity({
class: VacayCompanyHolidays,
repository: () => VacayCompanyHolidaysRepository,
uniques: [{ properties: ['plan_id', 'date'] }],
uniques: [{ properties: ['plan', 'date'] }],
properties: {
id: p.integer().primary(),
plan: () => p.manyToOne(VacayPlans).ref().deleteRule('cascade').hidden(),
@@ -18,7 +18,7 @@ export class VacayEntries {
export const VacayEntriesSchema = defineEntity({
class: VacayEntries,
repository: () => VacayEntriesRepository,
uniques: [{ properties: ['user_id', 'plan_id', 'date'] }],
uniques: [{ properties: ['user', 'plan', 'date'] }],
properties: {
id: p.integer().primary(),
plan: () => p.manyToOne(VacayPlans).ref().deleteRule('cascade').hidden(),
@@ -17,7 +17,7 @@ export class VacayPlanMembers {
export const VacayPlanMembersSchema = defineEntity({
class: VacayPlanMembers,
repository: () => VacayPlanMembersRepository,
uniques: [{ properties: ['plan_id', 'user_id'] }],
uniques: [{ properties: ['plan', 'user'] }],
properties: {
id: p.integer().primary(),
plan: () => p.manyToOne(VacayPlans).ref().deleteRule('cascade').hidden(),
+1 -1
View File
@@ -35,7 +35,7 @@ export class VacayPlans {
export const VacayPlansSchema = defineEntity({
class: VacayPlans,
repository: () => VacayPlansRepository,
uniques: [{ properties: ['owner_id'] }],
uniques: [{ properties: ['owner'] }],
properties: {
id: p.integer().primary(),
owner: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden(),
+1 -1
View File
@@ -16,7 +16,7 @@ export class VacayShares {
export const VacaySharesSchema = defineEntity({
class: VacayShares,
repository: () => VacaySharesRepository,
uniques: [{ properties: ['owner_id', 'user_id'] }],
uniques: [{ properties: ['owner', 'user'] }],
properties: {
id: p.integer().primary(),
owner: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden(),
@@ -15,7 +15,7 @@ export class VacayUserColors {
export const VacayUserColorsSchema = defineEntity({
class: VacayUserColors,
repository: () => VacayUserColorsRepository,
uniques: [{ properties: ['user_id', 'plan_id'] }],
uniques: [{ properties: ['user', 'plan'] }],
properties: {
id: p.integer().primary(),
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden(),
@@ -17,7 +17,7 @@ export class VacayUserYears {
export const VacayUserYearsSchema = defineEntity({
class: VacayUserYears,
repository: () => VacayUserYearsRepository,
uniques: [{ properties: ['user_id', 'plan_id', 'year'] }],
uniques: [{ properties: ['user', 'plan', 'year'] }],
properties: {
id: p.integer().primary(),
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden(),
+1 -1
View File
@@ -12,7 +12,7 @@ export class VacayYears {
export const VacayYearsSchema = defineEntity({
class: VacayYears,
repository: () => VacayYearsRepository,
uniques: [{ properties: ['plan_id', 'year'] }],
uniques: [{ properties: ['plan', 'year'] }],
properties: {
id: p.integer().primary(),
plan: () => p.manyToOne(VacayPlans).ref().deleteRule('cascade').hidden(),
@@ -15,7 +15,7 @@ export class VisitedCountries {
export const VisitedCountriesSchema = defineEntity({
class: VisitedCountries,
repository: () => VisitedCountriesRepository,
uniques: [{ properties: ['user_id', 'country_code'] }],
uniques: [{ properties: ['user', 'country_code'] }],
properties: {
id: p.integer().primary(),
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden(),
@@ -16,7 +16,7 @@ export class VisitedRegions {
export const VisitedRegionsSchema = defineEntity({
class: VisitedRegions,
repository: () => VisitedRegionsRepository,
uniques: [{ properties: ['user_id', 'region_code'] }],
uniques: [{ properties: ['user', 'region_code'] }],
properties: {
id: p.integer().primary(),
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden(),