mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Fix database cleanup query pulling duplicate mediaProgresses
This commit is contained in:
		
							parent
							
								
									6b8b27b04f
								
							
						
					
					
						commit
						1f7be58124
					
				| @ -766,14 +766,25 @@ class Database { | ||||
|       Logger.warn(`Removed ${badSessionsRemoved} sessions that were 3 seconds or less`) | ||||
|     } | ||||
| 
 | ||||
|     // Remove mediaProgresses with duplicate mediaItemId (remove the oldest updatedAt)
 | ||||
|     // const [duplicateMediaProgresses] = await this.sequelize.query(`SELECT id, mediaItemId FROM mediaProgresses WHERE (mediaItemId, userId, updatedAt) IN (SELECT mediaItemId, userId, MIN(updatedAt) FROM mediaProgresses GROUP BY mediaItemId, userId HAVING COUNT(*) > 1)`)
 | ||||
|     // for (const duplicateMediaProgress of duplicateMediaProgresses) {
 | ||||
|     //   Logger.warn(`Found duplicate mediaProgress for mediaItem "${duplicateMediaProgress.mediaItemId}" - removing it`)
 | ||||
|     //   await this.mediaProgressModel.destroy({
 | ||||
|     //     where: { id: duplicateMediaProgress.id }
 | ||||
|     //   })
 | ||||
|     // }
 | ||||
|     // Remove mediaProgresses with duplicate mediaItemId (remove the oldest updatedAt or if updatedAt is the same, remove arbitrary one)
 | ||||
|     const [duplicateMediaProgresses] = await this.sequelize.query(`SELECT mp1.id, mp1.mediaItemId
 | ||||
| FROM mediaProgresses mp1 | ||||
| WHERE EXISTS ( | ||||
|     SELECT 1 | ||||
|     FROM mediaProgresses mp2 | ||||
|     WHERE mp2.mediaItemId = mp1.mediaItemId | ||||
|     AND mp2.userId = mp1.userId | ||||
|     AND ( | ||||
|         mp2.updatedAt > mp1.updatedAt | ||||
|         OR (mp2.updatedAt = mp1.updatedAt AND mp2.id < mp1.id) | ||||
|     ) | ||||
| )`)
 | ||||
|     for (const duplicateMediaProgress of duplicateMediaProgresses) { | ||||
|       Logger.warn(`Found duplicate mediaProgress for mediaItem "${duplicateMediaProgress.mediaItemId}" - removing it`) | ||||
|       await this.mediaProgressModel.destroy({ | ||||
|         where: { id: duplicateMediaProgress.id } | ||||
|       }) | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   async createTextSearchQuery(query) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user