diff --git a/api/bun.lock b/api/bun.lock index ece6762f..021a82d9 100644 --- a/api/bun.lock +++ b/api/bun.lock @@ -8,10 +8,10 @@ "@elysiajs/opentelemetry": "^1.4.10", "@elysiajs/swagger": "zoriya/elysia-swagger#build", "@kubiks/otel-drizzle": "zoriya/drizzle-otel#build", - "@logtape/elysia": "1.4.0-dev.461", - "@logtape/logtape": "1.3.6", - "@logtape/otel": "^1.3.5", - "@logtape/redaction": "^1.3.5", + "@logtape/elysia": "1.4.0-dev.466", + "@logtape/logtape": "1.4.0-dev.466", + "@logtape/otel": "1.4.0-dev.466", + "@logtape/redaction": "1.4.0-dev.466", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.208.0", "@opentelemetry/core": "^2.2.0", @@ -187,13 +187,13 @@ "@kubiks/otel-drizzle": ["@kubiks/otel-drizzle@github:zoriya/drizzle-otel#cc1d59b", { "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <2.0.0", "drizzle-orm": ">=0.28.0" } }, "zoriya-drizzle-otel-cc1d59b"], - "@logtape/elysia": ["@logtape/elysia@1.4.0-dev.461", "", { "peerDependencies": { "@logtape/logtape": "^1.4.0-dev.461+fd7a5594", "elysia": "^1.4.0" } }, "sha512-ngfDFD17ZFY0lW7g+4iskRUJPeu07fV9vroa0WGkuzN3fKGaP3iAqvg88m3qGw1s1Dr6HH7T1UVHDC0IimQQlg=="], + "@logtape/elysia": ["@logtape/elysia@1.4.0-dev.466", "", { "peerDependencies": { "@logtape/logtape": "^1.4.0-dev.466+6520471a", "elysia": "^1.4.0" } }, "sha512-PHTwLYl6v4siAv9+ghzvoCg7ajY/cGpMf54PIbFW2NdgtaLb8bh5qvjb93kdtbnaqkKuv/Ed25p5SyOx4qCkDA=="], - "@logtape/logtape": ["@logtape/logtape@1.3.6", "", {}, "sha512-OaK8eal8zcjB0GZbllXKgUC2T9h/GyNLQyQXjJkf1yum7SZKTWs9gs/t8NMS0kVVaSnA7bhU0Sjws/Iy4e0/IQ=="], + "@logtape/logtape": ["@logtape/logtape@1.4.0-dev.466", "", {}, "sha512-1gzhAvPxY1Q2IVdAJMt2YGESNGNV/gI1owsu43ND8NXrFRwdNJNQ1a1Wth7SYl50EQ9wTFkUjNXFKtwJBdLrBw=="], - "@logtape/otel": ["@logtape/otel@1.3.5", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.208.0", "@opentelemetry/exporter-logs-otlp-grpc": "^0.208.0", "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", "@opentelemetry/exporter-logs-otlp-proto": "^0.208.0", "@opentelemetry/otlp-exporter-base": "^0.208.0", "@opentelemetry/resources": "^2.2.0", "@opentelemetry/sdk-logs": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.38.0" }, "peerDependencies": { "@logtape/logtape": "^1.3.5" } }, "sha512-lsXIC/j3U148PuNXl36o7tPAxCvdn+hlqNT446e7PpCKLbnnp+o2XhQ+wdXaNRi491STR0GyblpX/r+7+6tG/A=="], + "@logtape/otel": ["@logtape/otel@1.4.0-dev.466", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.208.0", "@opentelemetry/exporter-logs-otlp-grpc": "^0.208.0", "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", "@opentelemetry/exporter-logs-otlp-proto": "^0.208.0", "@opentelemetry/otlp-exporter-base": "^0.208.0", "@opentelemetry/resources": "^2.2.0", "@opentelemetry/sdk-logs": "^0.208.0", "@opentelemetry/semantic-conventions": "^1.38.0" }, "peerDependencies": { "@logtape/logtape": "^1.4.0-dev.466+6520471a" } }, "sha512-pkq2umiuVBLCslUvkbhxUWBtmy512EeWK2fCsPWrGMmon7c7YBC5neN1HBdMi82wGOTBAOhRv4BODYmMVc5N5Q=="], - "@logtape/redaction": ["@logtape/redaction@1.3.5", "", { "peerDependencies": { "@logtape/logtape": "^1.3.5" } }, "sha512-6SQUPocQM6XpuOFTaIth1CCdlF42UPLu1Yz6IgoxyVneD74fAparYzrEhNMSRW8GMJYFcC0RkW5ncH7FrzEf5A=="], + "@logtape/redaction": ["@logtape/redaction@1.4.0-dev.466", "", { "peerDependencies": { "@logtape/logtape": "^1.4.0-dev.466+6520471a" } }, "sha512-7fVx+QbV82NXZ137BP/hpmt89WhmK3U7+wGnft7nh3zE693U1lpsIAmqei0/qVEH410LpfF7+Eh2KJReM1cePg=="], "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], diff --git a/api/package.json b/api/package.json index 06245612..1824e62c 100644 --- a/api/package.json +++ b/api/package.json @@ -12,10 +12,10 @@ "@elysiajs/opentelemetry": "^1.4.10", "@elysiajs/swagger": "zoriya/elysia-swagger#build", "@kubiks/otel-drizzle": "zoriya/drizzle-otel#build", - "@logtape/elysia": "1.4.0-dev.461", - "@logtape/logtape": "1.3.6", - "@logtape/otel": "^1.3.5", - "@logtape/redaction": "^1.3.5", + "@logtape/elysia": "1.4.0-dev.466", + "@logtape/logtape": "1.4.0-dev.466", + "@logtape/otel": "1.4.0-dev.466", + "@logtape/redaction": "1.4.0-dev.466", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.208.0", "@opentelemetry/core": "^2.2.0", diff --git a/api/src/base.ts b/api/src/base.ts index 2df28920..fcf1499c 100644 --- a/api/src/base.ts +++ b/api/src/base.ts @@ -45,7 +45,7 @@ export const base = new Elysia({ name: "base" }) return error; } console.error(code, error); - logger.error("Elysia encountered an error. code={code} error={error}", { + logger.error("Elysia encountered an error. code={code} error={error.message}", { code: code, error: error, }); diff --git a/api/src/controllers/entries.ts b/api/src/controllers/entries.ts index f0709ddc..1ac44f1e 100644 --- a/api/src/controllers/entries.ts +++ b/api/src/controllers/entries.ts @@ -298,7 +298,7 @@ export async function getEntries({ }), }) .from(entries) - .innerJoin(transQ, eq(entries.pk, transQ.pk)) + .leftJoin(transQ, eq(entries.pk, transQ.pk)) .crossJoinLateral(entryVideosQ) .leftJoin(progressQ, eq(entries.pk, progressQ.entryPk)) .where( diff --git a/api/src/controllers/seasons.ts b/api/src/controllers/seasons.ts index d08a29b7..c18e9d03 100644 --- a/api/src/controllers/seasons.ts +++ b/api/src/controllers/seasons.ts @@ -93,7 +93,7 @@ export const seasonsH = new Elysia({ tags: ["series"] }) ...transCol, }) .from(seasons) - .innerJoin(transQ, eq(seasons.pk, transQ.pk)) + .leftJoin(transQ, eq(seasons.pk, transQ.pk)) .where( and( eq(seasons.showPk, serie.pk), diff --git a/api/src/controllers/seed/insert/entries.ts b/api/src/controllers/seed/insert/entries.ts index afff7c57..3727ec01 100644 --- a/api/src/controllers/seed/insert/entries.ts +++ b/api/src/controllers/seed/insert/entries.ts @@ -121,6 +121,7 @@ export const insertEntries = record( })); }); await flushImageQueue(tx, imgQueue, 0); + if (trans.length === 0) return ret; await tx .insert(entryTranslations) .select(unnestValues(trans, entryTranslations)) diff --git a/api/src/controllers/seed/insert/seasons.ts b/api/src/controllers/seed/insert/seasons.ts index 00254c2b..84b11898 100644 --- a/api/src/controllers/seed/insert/seasons.ts +++ b/api/src/controllers/seed/insert/seasons.ts @@ -64,6 +64,7 @@ export const insertSeasons = record( })), ); await flushImageQueue(tx, imgQueue, -10); + if (trans.length === 0) return ret; await tx .insert(seasonTranslations) .select(unnestValues(trans, seasonTranslations)) diff --git a/scanner/scanner/providers/thetvdb.py b/scanner/scanner/providers/thetvdb.py index 7b6ccee8..2ce6a219 100644 --- a/scanner/scanner/providers/thetvdb.py +++ b/scanner/scanner/providers/thetvdb.py @@ -411,7 +411,7 @@ class TVDB(Provider): air_date=datetime.strptime(entry["aired"], "%Y-%m-%d").date() if entry["aired"] else None, - thumbnail=f"https://artworks.thetvdb.com{entry["image"]}" + thumbnail=f"https://artworks.thetvdb.com{entry['image']}" if entry["image"] else None, slug=None,