X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Futils.ts;h=eb6653f3ddf24d906c4333a7856fd26d8923618c;hb=22a16e36f6526887ed8f5e5d3c9f9e5da0b4a8cd;hp=49d32c24f95c11c4c9e3bbdba1cef372c68e9e7c;hpb=57c36b277e68b764dd34cb2e449f6e2ca3d1e9b6;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/utils.ts b/server/models/utils.ts index 49d32c24f..eb6653f3d 100644 --- a/server/models/utils.ts +++ b/server/models/utils.ts @@ -1,6 +1,8 @@ // Translate for example "-name" to [ [ 'name', 'DESC' ], [ 'id', 'ASC' ] ] import { Sequelize } from 'sequelize-typescript' +type SortType = { sortModel: any, sortValue: string } + function getSort (value: string, lastSort: string[] = [ 'id', 'ASC' ]) { let field: any let direction: 'ASC' | 'DESC' @@ -14,7 +16,7 @@ function getSort (value: string, lastSort: string[] = [ 'id', 'ASC' ]) { } // Alias - if (field.toLowerCase() === 'bestmatch') field = Sequelize.col('similarity') + if (field.toLowerCase() === 'match') field = Sequelize.col('similarity') return [ [ field, direction ], lastSort ] } @@ -51,32 +53,21 @@ function createSimilarityAttribute (col: string, value: string) { ) } -function createSearchTrigramQuery (col: string, value: string) { - return { - [ Sequelize.Op.or ]: [ - // FIXME: use word_similarity instead of just similarity? - Sequelize.where(searchTrigramNormalizeCol(col), ' % ', searchTrigramNormalizeValue(value)), - - Sequelize.where(searchTrigramNormalizeCol(col), ' LIKE ', searchTrigramNormalizeValue(`%${value}%`)) - ] - } -} - // --------------------------------------------------------------------------- export { + SortType, getSort, getSortOnModel, createSimilarityAttribute, throwIfNotValid, - buildTrigramSearchIndex, - createSearchTrigramQuery + buildTrigramSearchIndex } // --------------------------------------------------------------------------- function searchTrigramNormalizeValue (value: string) { - return Sequelize.fn('lower', Sequelize.fn('unaccent', value)) + return Sequelize.fn('lower', Sequelize.fn('immutable_unaccent', value)) } function searchTrigramNormalizeCol (col: string) {