Fix collection insertion

This commit is contained in:
Zoe Roux
2026-02-17 09:20:01 +01:00
parent 752f091dbf
commit 7c781e533e
13 changed files with 105 additions and 68 deletions
+11 -3
View File
@@ -5,7 +5,9 @@ import { conflictUpdateAllExcept } from "~/db/utils";
import type { SeedCollection } from "~/models/collections";
import type { SeedMovie } from "~/models/movie";
import type { SeedSerie } from "~/models/serie";
import type { Original } from "~/models/utils";
import { record } from "~/otel";
import { uniq } from "~/utils";
import { enqueueOptImage, flushImageQueue, type ImageTask } from "../images";
type ShowTrans = typeof showTranslations.$inferInsert;
@@ -13,16 +15,17 @@ type ShowTrans = typeof showTranslations.$inferInsert;
export const insertCollection = record(
"insertCollection",
async (
collection: SeedCollection | undefined,
collection: SeedCollection | null | undefined,
show: (
| ({ kind: "movie" } & SeedMovie)
| ({ kind: "serie" } & SeedSerie)
) & {
nextRefresh: Date;
},
original: Original,
) => {
if (!collection) return null;
const { translations, ...col } = collection;
const { translations, genres, ...col } = collection;
return await db.transaction(async (tx) => {
const imgQueue: ImageTask[] = [];
@@ -35,7 +38,12 @@ export const insertCollection = record(
endAir: show.kind === "movie" ? show.airDate : show.endAir,
nextRefresh: show.nextRefresh,
entriesCount: 0,
original: {} as any,
original: {
language: original.language,
name: original.name,
latinName: original.latinName,
},
genres: uniq(show.genres),
...col,
})
.onConflictDoUpdate({
+22 -17
View File
@@ -54,14 +54,29 @@ export const seedMovie = async (
const { translations, videos, collection, studios, staff, ...movie } = seed;
const nextRefresh = guessNextRefresh(movie.airDate ?? new Date());
const ori = translations[movie.originalLanguage];
const original = ori
? {
...ori,
latinName: ori.latinName ?? null,
language: movie.originalLanguage,
}
: {
name: null,
latinName: null,
language: movie.originalLanguage,
};
const col = await insertCollection(collection, {
kind: "movie",
nextRefresh,
...seed,
});
const col = await insertCollection(
collection,
{
kind: "movie",
nextRefresh,
...seed,
},
original,
);
const original = translations[movie.originalLanguage];
const show = await insertShow(
{
kind: "movie",
@@ -71,17 +86,7 @@ export const seedMovie = async (
entriesCount: 1,
...movie,
},
original
? {
...original,
latinName: original.latinName ?? null,
language: movie.originalLanguage,
}
: {
name: null,
latinName: null,
language: movie.originalLanguage,
},
original,
translations,
);
if ("status" in show) return show;
+22 -17
View File
@@ -90,14 +90,29 @@ export const seedSerie = async (
...serie
} = seed;
const nextRefresh = guessNextRefresh(serie.startAir ?? new Date());
const ori = translations[serie.originalLanguage];
const original = ori
? {
...ori,
latinName: ori.latinName ?? null,
language: serie.originalLanguage,
}
: {
name: null,
latinName: null,
language: serie.originalLanguage,
};
const col = await insertCollection(collection, {
kind: "serie",
nextRefresh,
...seed,
});
const col = await insertCollection(
collection,
{
kind: "serie",
nextRefresh,
...seed,
},
original,
);
const original = translations[serie.originalLanguage];
const show = await insertShow(
{
kind: "serie",
@@ -106,17 +121,7 @@ export const seedSerie = async (
entriesCount: entries.length,
...serie,
},
original
? {
...original,
latinName: original.latinName ?? null,
language: serie.originalLanguage,
}
: {
name: null,
latinName: null,
language: serie.originalLanguage,
},
original,
translations,
);
if ("status" in show) return show;