feat: add versioned migrations and kysely query layer
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
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');
|
||||
};
|
||||
Reference in New Issue
Block a user