Compare commits

..

No commits in common. "ec70c4f0c7816182b3497a3458b8f19d1e8a68ce" and "0b5b9c8aa47739d00bc559d0198d135861090325" have entirely different histories.

4 changed files with 33 additions and 55 deletions

View File

@ -32,44 +32,42 @@ function initReleasesActions(store, _router) {
$limit: Int = 20 $limit: Int = 20
) { ) {
releases: searchReleases( releases: searchReleases(
query: $query search: $query
first: $limit first: $limit
) { ) {
releaseById { id
title
date
url
site {
id id
title slug
date name
url url
site { network {
id id
slug slug
name name
url url
network {
id
slug
name
url
}
} }
actors: releasesActors { }
actor { actors: releasesActors {
id actor {
slug id
name slug
} name
} }
tags: releasesTags { }
tag { tags: releasesTags {
id tag {
name id
slug name
} slug
} }
poster: releasesPosterByReleaseId { }
media { poster: releasesPosterByReleaseId {
thumbnail media {
} thumbnail
} }
} }
} }
@ -81,7 +79,7 @@ function initReleasesActions(store, _router) {
if (!res) return []; if (!res) return [];
return res.releases.map(release => curateRelease(release.releaseById)); return res.releases.map(release => curateRelease(release));
} }
async function fetchReleaseById({ _commit }, releaseId) { async function fetchReleaseById({ _commit }, releaseId) {

View File

@ -1,34 +1,14 @@
exports.up = knex => Promise.resolve() exports.up = knex => Promise.resolve()
.then(() => knex.raw(` .then(() => knex.raw(`
CREATE VIEW releases_document AS CREATE FUNCTION search_releases(search text) RETURNS SETOF releases AS $$
SELECT SELECT * FROM releases
releases.id, WHERE
releases.site_id, title ILIKE ('%' || search || '%') OR
to_tsvector(releases.title) || url ILIKE ('%' || search || '%')
to_tsvector(sites.name) ||
to_tsvector(sites.slug) ||
to_tsvector(replace(CAST(releases.date AS VARCHAR), '-', ' ')) ||
to_tsvector(string_agg(actors.name, ' ')) ||
to_tsvector(string_agg(tags.name, ' ')) as document
FROM releases
JOIN releases_actors AS local_actors ON local_actors.release_id = releases.id
JOIN releases_tags AS local_tags ON local_tags.release_id = releases.id
JOIN sites ON releases.site_id = sites.id
JOIN actors ON local_actors.actor_id = actors.id
JOIN tags ON local_tags.tag_id = tags.id
GROUP BY releases.id, sites.name, sites.slug;
COMMENT ON VIEW releases_document IS E'@foreignKey (id) references releases (id)\n@foreignKey (site_id) references sites (id)';
CREATE FUNCTION search_releases(query text) RETURNS SETOF releases_document AS $$
SELECT * FROM releases_document AS search
WHERE search.document @@ plainto_tsquery(replace(query, '.', ' '))
ORDER BY ts_rank(search.document, plainto_tsquery(replace(query, '.', ' '))) DESC;
$$ LANGUAGE SQL STABLE; $$ LANGUAGE SQL STABLE;
`)); `));
exports.down = knex => Promise.resolve() exports.down = knex => Promise.resolve()
.then(() => knex.raw(` .then(() => knex.raw(`
DROP FUNCTION IF EXISTS search_releases; DROP FUNCTION IF EXISTS search_releases;
DROP VIEW IF EXISTS releases_document;
`)); `));

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.102.1", "version": "1.102.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.102.1", "version": "1.102.0",
"description": "All the latest porn releases in one place", "description": "All the latest porn releases in one place",
"main": "src/app.js", "main": "src/app.js",
"scripts": { "scripts": {