0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-01-27 22:59:51 -05:00

Migrate Search to class

This commit is contained in:
Juan Picado 2017-04-17 15:52:36 +02:00
parent b5acc054bf
commit e6561e10d4
No known key found for this signature in database
GPG key ID: 18AC54485952D158

View file

@ -1,36 +1,47 @@
var lunr = require('lunr') "use strict";
function Search() { const lunr = require('lunr')
var self = Object.create(Search.prototype)
self.index = lunr(function() { class Search {
constructor() {
this.index = lunr(function() {
this.field('name' , { boost: 10 }) this.field('name' , { boost: 10 })
this.field('description' , { boost: 4 }) this.field('description' , { boost: 4 })
this.field('author' , { boost: 6 }) this.field('author' , { boost: 6 })
this.field('readme') this.field('readme')
}) })
return self }
}
Search.prototype.query = function(q) { query(q) {
return q === '*' return q === '*'
? this.storage.config.localList.get().map( function( package ){ return { ref: package, score: 1 }; } ) ? this.storage.config.localList.get().map( function( pkg ) {
: this.index.search(q); return { ref: pkg, score: 1 };
} }) : this.index.search(q);
}
Search.prototype.add = function(package) { add(pkg) {
this.index.add({ this.index.add({
id: package.name, id: pkg.name,
name: package.name, name: pkg.name,
description: package.description, description: pkg.description,
author: package._npmUser ? package._npmUser.name : '???', author: pkg._npmUser ? pkg._npmUser.name : '???',
}) })
}, }
Search.prototype.remove = function(name) { add(pkg) {
this.index.add({
id: pkg.name,
name: pkg.name,
description: pkg.description,
author: pkg._npmUser ? pkg._npmUser.name : '???',
})
}
remove(name) {
this.index.remove({ id: name }) this.index.remove({ id: name })
} }
Search.prototype.reindex = function() { reindex() {
var self = this var self = this
this.storage.get_local(function(err, packages) { this.storage.get_local(function(err, packages) {
if (err) throw err // that function shouldn't produce any if (err) throw err // that function shouldn't produce any
@ -39,11 +50,12 @@ Search.prototype.reindex = function() {
self.add(packages[i]) self.add(packages[i])
} }
}) })
} }
Search.prototype.configureStorage = function(storage) { configureStorage(storage) {
this.storage = storage this.storage = storage
this.reindex() this.reindex()
}
} }
module.exports = Search() module.exports = new Search();