Added WIP media module. Returning releases from release search database function. Fixed page loop in update module.

This commit is contained in:
2020-03-29 04:00:46 +02:00
parent 6d9f96c5d5
commit 93d4f0ff1a
19 changed files with 316 additions and 239 deletions

View File

@@ -18,7 +18,8 @@ exports.up = knex => Promise.resolve()
.defaultTo(0);
}))
.then(() => knex.schema.createTable('media', (table) => {
table.increments('id', 16);
table.string('id', 21)
.primary();
table.string('path');
table.string('thumbnail');
@@ -35,7 +36,9 @@ exports.up = knex => Promise.resolve()
table.string('scraper', 32);
table.string('copyright', 100);
table.string('source', 1000);
table.string('source', 2100);
table.string('source_page', 2100);
table.text('comment');
table.string('group');
@@ -47,23 +50,23 @@ exports.up = knex => Promise.resolve()
.defaultTo(knex.fn.now());
}))
.then(() => knex.schema.createTable('media_sfw', (table) => {
table.increments('id', 12);
table.string('id', 21)
.primary();
table.integer('media_id', 16)
table.string('media_id', 21)
.references('id')
.inTable('media');
table.unique('media_id');
.inTable('media')
.unique();
}))
.then(() => knex.raw(`
CREATE FUNCTION get_random_sfw_media_id() RETURNS int AS $$
CREATE FUNCTION get_random_sfw_media_id() RETURNS varchar AS $$
SELECT media_id FROM media_sfw
ORDER BY random()
LIMIT 1;
$$ LANGUAGE sql STABLE;
`))
.then(() => knex.schema.alterTable('media', (table) => {
table.integer('sfw_media_id', 16)
table.string('sfw_media_id', 21)
.references('id')
.inTable('media')
.defaultTo(knex.raw('get_random_sfw_media_id()'));
@@ -112,7 +115,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('tags');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -125,7 +128,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('tags');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -472,7 +475,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('actors');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -485,7 +488,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('actors');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -622,7 +625,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('releases');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -635,7 +638,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('releases');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -648,7 +651,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('releases');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -661,7 +664,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('releases');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -674,7 +677,7 @@ exports.up = knex => Promise.resolve()
.references('id')
.inTable('releases');
table.integer('media_id', 16)
table.string('media_id', 21)
.notNullable()
.references('id')
.inTable('media');
@@ -718,10 +721,12 @@ exports.up = knex => Promise.resolve()
CREATE UNIQUE INDEX releases_search_unique ON releases_search (release_id);
CREATE INDEX releases_search_index ON releases_search USING GIN (document);
CREATE FUNCTION search_releases(query text) RETURNS SETOF releases_search AS $$
SELECT * FROM releases_search AS search
WHERE search.document @@ plainto_tsquery('traxxx', regexp_replace(query, '\\.|-|(XXX\\.[\\d+|hd|sd].*$)', ' ', 'ig'))
ORDER BY ts_rank(search.document, plainto_tsquery('traxxx', regexp_replace(query, '\\.|-|(XXX\\.[\\d+|hd|sd].*$)', ' ', 'ig'))) DESC;
CREATE FUNCTION search_releases(query text) RETURNS SETOF releases AS $$
SELECT * FROM releases WHERE releases.id IN (
SELECT release_id FROM releases_search AS search
WHERE search.document @@ plainto_tsquery('traxxx', regexp_replace(query, '\\.|-|(XXX\\.[\\d+|hd|sd].*$)', ' ', 'ig'))
ORDER BY ts_rank(search.document, plainto_tsquery('traxxx', regexp_replace(query, '\\.|-|(XXX\\.[\\d+|hd|sd].*$)', ' ', 'ig'))) DESC
);
$$ LANGUAGE SQL STABLE;
CREATE FUNCTION search_sites(search text) RETURNS SETOF sites AS $$