mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Update uuid migration to v2.17.0 and for all tables still using UUIDv4
This commit is contained in:
		
							parent
							
								
									161a3f4da9
								
							
						
					
					
						commit
						2b7e3f0efe
					
				| @ -3,8 +3,8 @@ | ||||
| Please add a record of every database migration that you create to this file. This will help us keep track of changes to the database schema over time. | ||||
| 
 | ||||
| | Server Version | Migration Script Name        | Description                                                                          | | ||||
| | -------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------- | | ||||
| | -------------- | ---------------------------- | ------------------------------------------------------------------------------------ | | ||||
| | v2.15.0        | v2.15.0-series-column-unique | Series must have unique names in the same library                                    | | ||||
| | v2.15.1        | v2.15.1-reindex-nocase       | Fix potential db corruption issues due to bad sqlite extension introduced in v2.12.0 | | ||||
| | v2.15.2        | v2.15.2-index-creation       | Creates author, series, and podcast episode indexes                                  | | ||||
| | v2.16.3        | v2.16.3-uuid-replacement     | Changes `mediaId` column in `libraryItem` table to match the primary key type of `books` and `podcasts` | | ||||
| | v2.17.0        | v2.17.0-uuid-replacement     | Changes the data type of columns with UUIDv4 to UUID matching the associated model   | | ||||
|  | ||||
| @ -1,50 +0,0 @@ | ||||
| /** | ||||
|  * @typedef MigrationContext | ||||
|  * @property {import('sequelize').QueryInterface} queryInterface - a suquelize QueryInterface object. | ||||
|  * @property {import('../Logger')} logger - a Logger object. | ||||
|  * | ||||
|  * @typedef MigrationOptions | ||||
|  * @property {MigrationContext} context - an object containing the migration context. | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * This upward migration script changes the `mediaId` column in the `libraryItems` table to be a UUID and match other tables. | ||||
|  * | ||||
|  * @param {MigrationOptions} options - an object containing the migration context. | ||||
|  * @returns {Promise<void>} - A promise that resolves when the migration is complete. | ||||
|  */ | ||||
| async function up({ context: { queryInterface, logger } }) { | ||||
|   // Upwards migration script
 | ||||
|   logger.info('[2.16.3 migration] UPGRADE BEGIN: 2.16.3-uuid-replacement') | ||||
| 
 | ||||
|   // Change mediaId column to using the query interface
 | ||||
|   logger.info('[2.16.3 migration] Changing mediaId column to UUID') | ||||
|   await queryInterface.changeColumn('libraryItems', 'mediaId', { | ||||
|     type: 'UUID' | ||||
|   }) | ||||
| 
 | ||||
|   // Completed migration
 | ||||
|   logger.info('[2.16.3 migration] UPGRADE END: 2.16.3-uuid-replacement') | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * This downward migration script changes the `mediaId` column in the `libraryItems` table to be a UUIDV4 again. | ||||
|  * | ||||
|  * @param {MigrationOptions} options - an object containing the migration context. | ||||
|  * @returns {Promise<void>} - A promise that resolves when the migration is complete. | ||||
|  */ | ||||
| async function down({ context: { queryInterface, logger } }) { | ||||
|   // Downward migration script
 | ||||
|   logger.info('[2.16.3 migration] DOWNGRADE BEGIN: 2.16.3-uuid-replacement') | ||||
| 
 | ||||
|   // Change mediaId column to using the query interface
 | ||||
|   logger.info('[2.16.3 migration] Changing mediaId column to UUIDV4') | ||||
|   await queryInterface.changeColumn('libraryItems', 'mediaId', { | ||||
|     type: 'UUIDV4' | ||||
|   }) | ||||
| 
 | ||||
|   // Completed migration
 | ||||
|   logger.info('[2.16.3 migration] DOWNGRADE END: 2.16.3-uuid-replacement') | ||||
| } | ||||
| 
 | ||||
| module.exports = { up, down } | ||||
							
								
								
									
										98
									
								
								server/migrations/v2.17.0-uuid-replacement.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								server/migrations/v2.17.0-uuid-replacement.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,98 @@ | ||||
| /** | ||||
|  * @typedef MigrationContext | ||||
|  * @property {import('sequelize').QueryInterface} queryInterface - a suquelize QueryInterface object. | ||||
|  * @property {import('../Logger')} logger - a Logger object. | ||||
|  * | ||||
|  * @typedef MigrationOptions | ||||
|  * @property {MigrationContext} context - an object containing the migration context. | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * This upward migration script changes table columns with data type UUIDv4 to UUID to match associated models. | ||||
|  * | ||||
|  * @param {MigrationOptions} options - an object containing the migration context. | ||||
|  * @returns {Promise<void>} - A promise that resolves when the migration is complete. | ||||
|  */ | ||||
| async function up({ context: { queryInterface, logger } }) { | ||||
|   // Upwards migration script
 | ||||
|   logger.info('[2.17.0 migration] UPGRADE BEGIN: 2.17.0-uuid-replacement') | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing libraryItems.mediaId column to UUID') | ||||
|   await queryInterface.changeColumn('libraryItems', 'mediaId', { | ||||
|     type: 'UUID' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing feeds.entityId column to UUID') | ||||
|   await queryInterface.changeColumn('feeds', 'entityId', { | ||||
|     type: 'UUID' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing mediaItemShares.mediaItemId column to UUID') | ||||
|   await queryInterface.changeColumn('mediaItemShares', 'mediaItemId', { | ||||
|     type: 'UUID' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing playbackSessions.mediaItemId column to UUID') | ||||
|   await queryInterface.changeColumn('playbackSessions', 'mediaItemId', { | ||||
|     type: 'UUID' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing playlistMediaItems.mediaItemId column to UUID') | ||||
|   await queryInterface.changeColumn('playlistMediaItems', 'mediaItemId', { | ||||
|     type: 'UUID' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing mediaProgresses.mediaItemId column to UUID') | ||||
|   await queryInterface.changeColumn('mediaProgresses', 'mediaItemId', { | ||||
|     type: 'UUID' | ||||
|   }) | ||||
| 
 | ||||
|   // Completed migration
 | ||||
|   logger.info('[2.17.0 migration] UPGRADE END: 2.17.0-uuid-replacement') | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * This downward migration script changes table columns data type back to UUIDv4. | ||||
|  * | ||||
|  * @param {MigrationOptions} options - an object containing the migration context. | ||||
|  * @returns {Promise<void>} - A promise that resolves when the migration is complete. | ||||
|  */ | ||||
| async function down({ context: { queryInterface, logger } }) { | ||||
|   // Downward migration script
 | ||||
|   logger.info('[2.17.0 migration] DOWNGRADE BEGIN: 2.17.0-uuid-replacement') | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing libraryItems.mediaId column to UUIDV4') | ||||
|   await queryInterface.changeColumn('libraryItems', 'mediaId', { | ||||
|     type: 'UUIDV4' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing feeds.entityId column to UUIDV4') | ||||
|   await queryInterface.changeColumn('feeds', 'entityId', { | ||||
|     type: 'UUIDV4' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing mediaItemShares.mediaItemId column to UUIDV4') | ||||
|   await queryInterface.changeColumn('mediaItemShares', 'mediaItemId', { | ||||
|     type: 'UUIDV4' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing playbackSessions.mediaItemId column to UUIDV4') | ||||
|   await queryInterface.changeColumn('playbackSessions', 'mediaItemId', { | ||||
|     type: 'UUIDV4' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing playlistMediaItems.mediaItemId column to UUIDV4') | ||||
|   await queryInterface.changeColumn('playlistMediaItems', 'mediaItemId', { | ||||
|     type: 'UUIDV4' | ||||
|   }) | ||||
| 
 | ||||
|   logger.info('[2.17.0 migration] Changing mediaProgresses.mediaItemId column to UUIDV4') | ||||
|   await queryInterface.changeColumn('mediaProgresses', 'mediaItemId', { | ||||
|     type: 'UUIDV4' | ||||
|   }) | ||||
| 
 | ||||
|   // Completed migration
 | ||||
|   logger.info('[2.17.0 migration] DOWNGRADE END: 2.17.0-uuid-replacement') | ||||
| } | ||||
| 
 | ||||
| module.exports = { up, down } | ||||
| @ -274,7 +274,7 @@ class Feed extends Model { | ||||
|         }, | ||||
|         slug: DataTypes.STRING, | ||||
|         entityType: DataTypes.STRING, | ||||
|         entityId: DataTypes.UUIDV4, | ||||
|         entityId: DataTypes.UUID, | ||||
|         entityUpdatedAt: DataTypes.DATE, | ||||
|         serverAddress: DataTypes.STRING, | ||||
|         feedURL: DataTypes.STRING, | ||||
|  | ||||
| @ -109,7 +109,7 @@ class MediaItemShare extends Model { | ||||
|           defaultValue: DataTypes.UUIDV4, | ||||
|           primaryKey: true | ||||
|         }, | ||||
|         mediaItemId: DataTypes.UUIDV4, | ||||
|         mediaItemId: DataTypes.UUID, | ||||
|         mediaItemType: DataTypes.STRING, | ||||
|         slug: DataTypes.STRING, | ||||
|         pash: DataTypes.STRING, | ||||
|  | ||||
| @ -93,7 +93,7 @@ class MediaProgress extends Model { | ||||
|           defaultValue: DataTypes.UUIDV4, | ||||
|           primaryKey: true | ||||
|         }, | ||||
|         mediaItemId: DataTypes.UUIDV4, | ||||
|         mediaItemId: DataTypes.UUID, | ||||
|         mediaItemType: DataTypes.STRING, | ||||
|         duration: DataTypes.FLOAT, | ||||
|         currentTime: DataTypes.FLOAT, | ||||
|  | ||||
| @ -179,7 +179,7 @@ class PlaybackSession extends Model { | ||||
|           defaultValue: DataTypes.UUIDV4, | ||||
|           primaryKey: true | ||||
|         }, | ||||
|         mediaItemId: DataTypes.UUIDV4, | ||||
|         mediaItemId: DataTypes.UUID, | ||||
|         mediaItemType: DataTypes.STRING, | ||||
|         displayTitle: DataTypes.STRING, | ||||
|         displayAuthor: DataTypes.STRING, | ||||
|  | ||||
| @ -45,7 +45,7 @@ class PlaylistMediaItem extends Model { | ||||
|           defaultValue: DataTypes.UUIDV4, | ||||
|           primaryKey: true | ||||
|         }, | ||||
|         mediaItemId: DataTypes.UUIDV4, | ||||
|         mediaItemId: DataTypes.UUID, | ||||
|         mediaItemType: DataTypes.STRING, | ||||
|         order: DataTypes.INTEGER | ||||
|       }, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user