Compare commits
3 Commits
dac74e5a28
...
3529b66032
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3529b66032 | ||
|
|
108017884a | ||
|
|
be31679886 |
29
migrations/20260718034747_users_settings.js
Normal file
29
migrations/20260718034747_users_settings.js
Normal file
@@ -0,0 +1,29 @@
|
||||
exports.up = async function(knex) {
|
||||
await knex.schema.alterTable('users', (table) => {
|
||||
table.jsonb('settings');
|
||||
});
|
||||
|
||||
await knex.schema.alterTable('notifications', (table) => {
|
||||
table.boolean('notify')
|
||||
.notNullable()
|
||||
.defaultTo(true);
|
||||
|
||||
table.boolean('email')
|
||||
.notNullable()
|
||||
.defaultTo(false);
|
||||
|
||||
table.datetime('emailed_at');
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = async function(knex) {
|
||||
await knex.schema.alterTable('users', (table) => {
|
||||
table.dropColumn('settings');
|
||||
});
|
||||
|
||||
await knex.schema.alterTable('notifications', (table) => {
|
||||
table.dropColumn('notify');
|
||||
table.dropColumn('email');
|
||||
table.dropColumn('emailed_at');
|
||||
});
|
||||
};
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "traxxx",
|
||||
"version": "1.255.0",
|
||||
"version": "1.255.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "traxxx",
|
||||
"version": "1.255.0",
|
||||
"version": "1.255.1",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.458.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "traxxx",
|
||||
"version": "1.255.0",
|
||||
"version": "1.255.1",
|
||||
"description": "All the latest porn releases in one place",
|
||||
"main": "src/app.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -1638,6 +1638,10 @@ const aliases = [
|
||||
name: 'mmf',
|
||||
for: 'mfm',
|
||||
},
|
||||
{
|
||||
name: 'threesome mmf',
|
||||
for: 'mfm',
|
||||
},
|
||||
{
|
||||
name: 'fmf',
|
||||
for: 'mff',
|
||||
|
||||
@@ -252,7 +252,12 @@ async function init() {
|
||||
const storedMovies = await storeMovies(deepMovies, storedScenes[0]?.batchId);
|
||||
const storedMovieScenes = await storeScenes(deepMovieScenes, storedScenes[0]?.batchId);
|
||||
|
||||
await associateMovieScenes(storedMovies, [...storedScenes, ...storedMovieScenes]);
|
||||
const allScenes = [...storedScenes, ...storedMovieScenes];
|
||||
|
||||
await associateMovieScenes(storedMovies, allScenes);
|
||||
|
||||
await updateSceneSearch(allScenes.map((scene) => scene.id));
|
||||
await updateMovieSearch(storedMovies.map((movie) => movie.id));
|
||||
}
|
||||
|
||||
logger.info(`Completed in ${Object.entries(intervalToDuration({ start: startTime, end: Date.now() }))
|
||||
|
||||
@@ -17,7 +17,6 @@ const { associateActors, associateDirectors, scrapeActors, toBaseActors } = requ
|
||||
const { associateReleaseTags } = require('./tags');
|
||||
const { curateEntity } = require('./entities');
|
||||
const { associateReleaseMedia } = require('./media');
|
||||
const { updateSceneSearch, updateMovieSearch } = require('./update-search');
|
||||
|
||||
const geoCommon = import('../common/geo.mjs'); // eslint-disable-line import/extensions, import/no-relative-packages
|
||||
|
||||
@@ -344,7 +343,8 @@ async function associateMovieScenes(movies, movieScenes) {
|
||||
|
||||
await bulkInsert('movies_scenes', associations, false);
|
||||
|
||||
await updateSceneSearch(movieScenes.map((scene) => scene.id));
|
||||
// movieScenes includes scenes that are not associated to any movies, don't update those (again)
|
||||
// await updateSceneSearch(associations.map((association) => association.scene_id));
|
||||
}
|
||||
|
||||
async function associateSerieScenes(series, serieScenes) {
|
||||
@@ -391,7 +391,7 @@ async function storeMovies(movies, useBatchId) {
|
||||
const moviesWithId = attachReleaseIds(movies, storedMovies);
|
||||
|
||||
await associateReleaseTags(moviesWithId, 'movie');
|
||||
await updateMovieSearch(moviesWithId.map((movie) => movie.id));
|
||||
// await updateMovieSearch(moviesWithId.map((movie) => movie.id));
|
||||
|
||||
await associateReleaseMedia(moviesWithId, 'movie');
|
||||
|
||||
@@ -419,7 +419,8 @@ async function storeSeries(series, useBatchId) {
|
||||
const storedSeries = await bulkInsert('series', curatedSerieEntries, ['entity_id', 'entry_id'], true);
|
||||
const seriesWithId = attachReleaseIds(series, storedSeries);
|
||||
|
||||
await updateMovieSearch(seriesWithId.map((serie) => serie.id), 'serie');
|
||||
// TODO: the movie search function doesn't accept a second parameter, and we don't currently have a series search index at all; re-evaluate what actually needs to happen here
|
||||
// await updateMovieSearch(seriesWithId.map((serie) => serie.id), 'serie');
|
||||
await associateReleaseMedia(seriesWithId, 'serie');
|
||||
|
||||
return seriesWithId;
|
||||
@@ -489,7 +490,7 @@ async function storeScenes(releases, useBatchId) {
|
||||
await associateDirectors(releasesWithId, batchId); // some directors may also be actors, don't associate at the same time
|
||||
}
|
||||
|
||||
await updateSceneSearch(releasesWithId.map((release) => release.id));
|
||||
// await updateSceneSearch(releasesWithId.map((release) => release.id));
|
||||
|
||||
// media is more error-prone, associate separately
|
||||
await associateReleaseMedia(releasesWithId);
|
||||
@@ -509,6 +510,4 @@ module.exports = {
|
||||
associateMovieScenes,
|
||||
storeScenes,
|
||||
storeMovies,
|
||||
updateSceneSearch,
|
||||
updateMovieSearch,
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@ async function syncWeb(domain, ids) {
|
||||
return;
|
||||
}
|
||||
|
||||
await knex('sync').insert({ domain, item_ids: ids });
|
||||
await knex('sync').insert({ domain, item_ids: Array.from(new Set(ids)) });
|
||||
|
||||
if (config.webApi.enabled) {
|
||||
await unprint.post(`${config.webApi.address}/sync`, null, {
|
||||
|
||||
Reference in New Issue
Block a user