refactoring

This commit is contained in:
Moriz Wahl 2020-04-14 16:45:29 +02:00
parent 499f9859e8
commit c060ad0c4a

View File

@ -3,12 +3,11 @@ import { queryString } from './searches/queryString'
// see http://lucene.apache.org/core/8_3_1/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package.description // see http://lucene.apache.org/core/8_3_1/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package.description
const createCypher = (setup) => ` const cypherTemplate = (setup) => `
CALL db.index.fulltext.queryNodes('${setup.fulltextIndex}', $query) CALL db.index.fulltext.queryNodes('${setup.fulltextIndex}', $query)
YIELD node as resource, score YIELD node as resource, score
${setup.match} ${setup.match}
WHERE score >= 0.0 ${setup.whereClause}
${setup.notClause}
${setup.withClause} ${setup.withClause}
RETURN RETURN
{ {
@ -18,9 +17,9 @@ const createCypher = (setup) => `
AS result AS result
` `
const simpleNotClause = 'AND NOT (resource.deleted = true OR resource.disabled = true)' const simpleWhereClause = 'WHERE score >= 0.0 AND NOT (resource.deleted = true OR resource.disabled = true)'
const postNotClause = `AND NOT ( const postWhereClause = `WHERE score >= 0.0 AND NOT (
author.deleted = true OR author.disabled = true author.deleted = true OR author.disabled = true
OR resource.deleted = true OR resource.disabled = true OR resource.deleted = true OR resource.disabled = true
OR (:User {id: $userId})-[:MUTED]->(author) OR (:User {id: $userId})-[:MUTED]->(author)
@ -29,7 +28,7 @@ const postNotClause = `AND NOT (
const searchPostsSetup = { const searchPostsSetup = {
fulltextIndex: 'post_fulltext_search', fulltextIndex: 'post_fulltext_search',
match: 'MATCH (resource)<-[:WROTE]-(author:User)', match: 'MATCH (resource)<-[:WROTE]-(author:User)',
notClause: postNotClause, whereClause: postWhereClause,
withClause: `WITH resource, author, withClause: `WITH resource, author,
[(resource)<-[:COMMENTS]-(comment:Comment) | comment] AS comments, [(resource)<-[:COMMENTS]-(comment:Comment) | comment] AS comments,
[(resource)<-[:SHOUTED]-(user:User) | user] AS shouter`, [(resource)<-[:SHOUTED]-(user:User) | user] AS shouter`,
@ -41,7 +40,7 @@ const searchPostsSetup = {
const searchUsersSetup = { const searchUsersSetup = {
fulltextIndex: 'user_fulltext_search', fulltextIndex: 'user_fulltext_search',
match: 'MATCH (resource)', match: 'MATCH (resource)',
notClause: simpleNotClause, whereClause: simpleWhereClause,
withClause: '', withClause: '',
additionalMapping: '', additionalMapping: '',
countKeyName: 'userCount', countKeyName: 'userCount',
@ -51,7 +50,7 @@ const searchUsersSetup = {
const searchHashtagsSetup = { const searchHashtagsSetup = {
fulltextIndex: 'tag_fulltext_search', fulltextIndex: 'tag_fulltext_search',
match: 'MATCH (resource)', match: 'MATCH (resource)',
notClause: simpleNotClause, whereClause: simpleWhereClause,
withClause: '', withClause: '',
additionalMapping: '', additionalMapping: '',
countKeyName: 'hashtagCount', countKeyName: 'hashtagCount',
@ -59,7 +58,7 @@ const searchHashtagsSetup = {
} }
const runSearchTransaction = async (transaction, setup, params) => { const runSearchTransaction = async (transaction, setup, params) => {
return transaction.run(createCypher(setup), params) return transaction.run(cypherTemplate(setup), params)
} }
const searchResultPromise = async (session, setup, params) => { const searchResultPromise = async (session, setup, params) => {