31 lines
1.2 KiB
JavaScript
31 lines
1.2 KiB
JavaScript
exports.up = (pgm) => {
|
|
pgm.createTable('trip_preference_overrides', {
|
|
id: { type: 'uuid', primaryKey: true, default: pgm.func('gen_random_uuid()') },
|
|
trip_id: { type: 'uuid', notNull: true, references: 'trips(id)', onDelete: 'CASCADE' },
|
|
user_id: { type: 'uuid', references: 'users(id)' },
|
|
traveler_id: { type: 'uuid', references: 'travelers(id)', onDelete: 'CASCADE' },
|
|
overrides: { type: 'jsonb', notNull: true, default: '{}' },
|
|
created_at: { type: 'timestamptz', notNull: true, default: pgm.func('now()') },
|
|
updated_at: { type: 'timestamptz', notNull: true, default: pgm.func('now()') },
|
|
});
|
|
pgm.addConstraint(
|
|
'trip_preference_overrides',
|
|
'trip_preference_overrides_subject_check',
|
|
'CHECK (num_nonnulls(user_id, traveler_id) = 1)',
|
|
);
|
|
pgm.createIndex('trip_preference_overrides', ['trip_id', 'user_id'], {
|
|
unique: true,
|
|
where: 'user_id IS NOT NULL',
|
|
name: 'trip_pref_overrides_trip_user_uq',
|
|
});
|
|
pgm.createIndex('trip_preference_overrides', ['trip_id', 'traveler_id'], {
|
|
unique: true,
|
|
where: 'traveler_id IS NOT NULL',
|
|
name: 'trip_pref_overrides_trip_traveler_uq',
|
|
});
|
|
};
|
|
|
|
exports.down = (pgm) => {
|
|
pgm.dropTable('trip_preference_overrides');
|
|
};
|