35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
|
|
// Two additions:
|
||
|
|
//
|
||
|
|
// 1. asset_id — direct FK to shared_assets, preferred over minio_object_key
|
||
|
|
// for segments created through the editor UI. Gnommo-ingested segments
|
||
|
|
// continue to use minio_object_key; asset_id is NULL for those.
|
||
|
|
//
|
||
|
|
// 2. segment_type — 'raw' for original recordings, 'final' for the
|
||
|
|
// processed/transcoded versions that the player actually consumes.
|
||
|
|
// The GnommoPlayer export uses the 'final' list; 'raw' is for reference
|
||
|
|
// and source-of-truth tracking.
|
||
|
|
|
||
|
|
exports.up = (pgm) => {
|
||
|
|
pgm.addColumns('narration_segments', {
|
||
|
|
asset_id: {
|
||
|
|
type: 'integer',
|
||
|
|
references: 'shared_assets',
|
||
|
|
onDelete: 'SET NULL',
|
||
|
|
},
|
||
|
|
segment_type: {
|
||
|
|
type: 'varchar(10)',
|
||
|
|
notNull: true,
|
||
|
|
default: "'raw'",
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
pgm.createIndex('narration_segments', ['project_id', 'segment_type', 'sort_order'], {
|
||
|
|
name: 'idx_narration_segments_type_order',
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
exports.down = (pgm) => {
|
||
|
|
pgm.dropIndex('narration_segments', null, { name: 'idx_narration_segments_type_order' });
|
||
|
|
pgm.dropColumns('narration_segments', ['asset_id', 'segment_type']);
|
||
|
|
};
|