mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-04 03:17:00 -05:00 
			
		
		
		
	Fix library query sort by title, add indexes for books and libraryItems
This commit is contained in:
		
							parent
							
								
									8c9fc3ddb5
								
							
						
					
					
						commit
						aac2879652
					
				@ -151,7 +151,27 @@ module.exports = (sequelize) => {
 | 
			
		||||
    genres: DataTypes.JSON
 | 
			
		||||
  }, {
 | 
			
		||||
    sequelize,
 | 
			
		||||
    modelName: 'book'
 | 
			
		||||
    modelName: 'book',
 | 
			
		||||
    indexes: [
 | 
			
		||||
      {
 | 
			
		||||
        fields: [{
 | 
			
		||||
          name: 'title',
 | 
			
		||||
          collate: 'NOCASE'
 | 
			
		||||
        }]
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        fields: [{
 | 
			
		||||
          name: 'titleIgnorePrefix',
 | 
			
		||||
          collate: 'NOCASE'
 | 
			
		||||
        }]
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        fields: ['publishedYear']
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        fields: ['duration']
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  return Book
 | 
			
		||||
 | 
			
		||||
@ -63,6 +63,10 @@ module.exports = (sequelize) => {
 | 
			
		||||
     */
 | 
			
		||||
    static getLibraryItemsIncrement(offset, limit) {
 | 
			
		||||
      return this.findAll({
 | 
			
		||||
        benchmark: true,
 | 
			
		||||
        logging: (sql, timeMs) => {
 | 
			
		||||
          console.log(`[Query] Elapsed ${timeMs}ms.`)
 | 
			
		||||
        },
 | 
			
		||||
        include: [
 | 
			
		||||
          {
 | 
			
		||||
            model: sequelize.models.book,
 | 
			
		||||
@ -89,7 +93,7 @@ module.exports = (sequelize) => {
 | 
			
		||||
          ['createdAt', 'ASC'],
 | 
			
		||||
          // Ensure author & series stay in the same order
 | 
			
		||||
          [sequelize.models.book, sequelize.models.author, sequelize.models.bookAuthor, 'createdAt', 'ASC'],
 | 
			
		||||
          [sequelize.models.book, sequelize.models.series, 'bookSeries', 'createdAt', 'ASC'],
 | 
			
		||||
          [sequelize.models.book, sequelize.models.series, 'bookSeries', 'createdAt', 'ASC']
 | 
			
		||||
        ],
 | 
			
		||||
        offset,
 | 
			
		||||
        limit
 | 
			
		||||
@ -702,6 +706,15 @@ module.exports = (sequelize) => {
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        fields: ['mediaId']
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        fields: ['libraryId', 'mediaType']
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        fields: ['birthtime']
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        fields: ['mtime']
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
@ -257,7 +257,7 @@ module.exports = {
 | 
			
		||||
      if (global.ServerSettings.sortingIgnorePrefix) {
 | 
			
		||||
        return [[Sequelize.literal('titleIgnorePrefix COLLATE NOCASE'), dir]]
 | 
			
		||||
      } else {
 | 
			
		||||
        return [[Sequelize.literal('title COLLATE NOCASE'), dir]]
 | 
			
		||||
        return [[Sequelize.literal('`book`.`title` COLLATE NOCASE'), dir]]
 | 
			
		||||
      }
 | 
			
		||||
    } else if (sortBy === 'sequence') {
 | 
			
		||||
      const nullDir = sortDesc ? 'DESC NULLS FIRST' : 'ASC NULLS LAST'
 | 
			
		||||
@ -546,6 +546,10 @@ module.exports = {
 | 
			
		||||
      distinct: true,
 | 
			
		||||
      attributes: bookAttributes,
 | 
			
		||||
      replacements,
 | 
			
		||||
      benchmark: true,
 | 
			
		||||
      logging: (sql, timeMs) => {
 | 
			
		||||
        console.log(`[Query] Elapsed ${timeMs}ms.`)
 | 
			
		||||
      },
 | 
			
		||||
      include: [
 | 
			
		||||
        {
 | 
			
		||||
          model: Database.models.libraryItem,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user