Fix type issues

This commit is contained in:
2025-11-23 22:19:24 +01:00
parent 019aceb8d9
commit 7ebc0fe504
10 changed files with 1971 additions and 236 deletions

View File

@@ -0,0 +1 @@
ALTER TABLE "kyoo"."seasons" ALTER COLUMN "entries_count" SET DEFAULT 0;

View File

@@ -164,12 +164,8 @@
"tableFrom": "entries",
"tableTo": "shows",
"schemaTo": "kyoo",
"columnsFrom": [
"show_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["show_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -179,25 +175,17 @@
"entries_id_unique": {
"name": "entries_id_unique",
"nullsNotDistinct": false,
"columns": [
"id"
]
"columns": ["id"]
},
"entries_slug_unique": {
"name": "entries_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
},
"entries_showPk_seasonNumber_episodeNumber_unique": {
"name": "entries_showPk_seasonNumber_episodeNumber_unique",
"nullsNotDistinct": false,
"columns": [
"show_pk",
"season_number",
"episode_number"
]
"columns": ["show_pk", "season_number", "episode_number"]
}
},
"policies": {},
@@ -273,12 +261,8 @@
"tableFrom": "entry_translations",
"tableTo": "entries",
"schemaTo": "kyoo",
"columnsFrom": [
"pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -286,10 +270,7 @@
"compositePrimaryKeys": {
"entry_translations_pk_language_pk": {
"name": "entry_translations_pk_language_pk",
"columns": [
"pk",
"language"
]
"columns": ["pk", "language"]
}
},
"uniqueConstraints": {},
@@ -381,12 +362,8 @@
"tableFrom": "history",
"tableTo": "profiles",
"schemaTo": "kyoo",
"columnsFrom": [
"profile_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["profile_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -395,12 +372,8 @@
"tableFrom": "history",
"tableTo": "entries",
"schemaTo": "kyoo",
"columnsFrom": [
"entry_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["entry_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -409,12 +382,8 @@
"tableFrom": "history",
"tableTo": "videos",
"schemaTo": "kyoo",
"columnsFrom": [
"video_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["video_pk"],
"columnsTo": ["pk"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -534,9 +503,7 @@
"profiles_id_unique": {
"name": "profiles_id_unique",
"nullsNotDistinct": false,
"columns": [
"id"
]
"columns": ["id"]
}
},
"policies": {},
@@ -613,12 +580,8 @@
"tableFrom": "season_translations",
"tableTo": "seasons",
"schemaTo": "kyoo",
"columnsFrom": [
"pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -626,10 +589,7 @@
"compositePrimaryKeys": {
"season_translations_pk_language_pk": {
"name": "season_translations_pk_language_pk",
"columns": [
"pk",
"language"
]
"columns": ["pk", "language"]
}
},
"uniqueConstraints": {},
@@ -773,12 +733,8 @@
"tableFrom": "seasons",
"tableTo": "shows",
"schemaTo": "kyoo",
"columnsFrom": [
"show_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["show_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -788,24 +744,17 @@
"seasons_id_unique": {
"name": "seasons_id_unique",
"nullsNotDistinct": false,
"columns": [
"id"
]
"columns": ["id"]
},
"seasons_slug_unique": {
"name": "seasons_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
},
"seasons_showPk_seasonNumber_unique": {
"name": "seasons_showPk_seasonNumber_unique",
"nullsNotDistinct": false,
"columns": [
"show_pk",
"season_number"
]
"columns": ["show_pk", "season_number"]
}
},
"policies": {},
@@ -927,12 +876,8 @@
"tableFrom": "show_translations",
"tableTo": "shows",
"schemaTo": "kyoo",
"columnsFrom": [
"pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -940,10 +885,7 @@
"compositePrimaryKeys": {
"show_translations_pk_language_pk": {
"name": "show_translations_pk_language_pk",
"columns": [
"pk",
"language"
]
"columns": ["pk", "language"]
}
},
"uniqueConstraints": {},
@@ -1135,12 +1077,8 @@
"tableFrom": "shows",
"tableTo": "shows",
"schemaTo": "kyoo",
"columnsFrom": [
"collection_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["collection_pk"],
"columnsTo": ["pk"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -1150,16 +1088,12 @@
"shows_id_unique": {
"name": "shows_id_unique",
"nullsNotDistinct": false,
"columns": [
"id"
]
"columns": ["id"]
},
"shows_slug_unique": {
"name": "shows_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
}
},
"policies": {},
@@ -1266,12 +1200,8 @@
"tableFrom": "roles",
"tableTo": "shows",
"schemaTo": "kyoo",
"columnsFrom": [
"show_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["show_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1280,12 +1210,8 @@
"tableFrom": "roles",
"tableTo": "staff",
"schemaTo": "kyoo",
"columnsFrom": [
"staff_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["staff_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -1376,16 +1302,12 @@
"staff_id_unique": {
"name": "staff_id_unique",
"nullsNotDistinct": false,
"columns": [
"id"
]
"columns": ["id"]
},
"staff_slug_unique": {
"name": "staff_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
}
},
"policies": {},
@@ -1416,12 +1338,8 @@
"tableFrom": "show_studio_join",
"tableTo": "shows",
"schemaTo": "kyoo",
"columnsFrom": [
"show_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["show_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1430,12 +1348,8 @@
"tableFrom": "show_studio_join",
"tableTo": "studios",
"schemaTo": "kyoo",
"columnsFrom": [
"studio_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["studio_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -1443,10 +1357,7 @@
"compositePrimaryKeys": {
"show_studio_join_show_pk_studio_pk_pk": {
"name": "show_studio_join_show_pk_studio_pk_pk",
"columns": [
"show_pk",
"studio_pk"
]
"columns": ["show_pk", "studio_pk"]
}
},
"uniqueConstraints": {},
@@ -1506,12 +1417,8 @@
"tableFrom": "studio_translations",
"tableTo": "studios",
"schemaTo": "kyoo",
"columnsFrom": [
"pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -1519,10 +1426,7 @@
"compositePrimaryKeys": {
"studio_translations_pk_language_pk": {
"name": "studio_translations_pk_language_pk",
"columns": [
"pk",
"language"
]
"columns": ["pk", "language"]
}
},
"uniqueConstraints": {},
@@ -1592,16 +1496,12 @@
"studios_id_unique": {
"name": "studios_id_unique",
"nullsNotDistinct": false,
"columns": [
"id"
]
"columns": ["id"]
},
"studios_slug_unique": {
"name": "studios_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
}
},
"policies": {},
@@ -1638,12 +1538,8 @@
"tableFrom": "entry_video_join",
"tableTo": "entries",
"schemaTo": "kyoo",
"columnsFrom": [
"entry_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["entry_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1652,12 +1548,8 @@
"tableFrom": "entry_video_join",
"tableTo": "videos",
"schemaTo": "kyoo",
"columnsFrom": [
"video_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["video_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -1665,19 +1557,14 @@
"compositePrimaryKeys": {
"entry_video_join_entry_pk_video_pk_pk": {
"name": "entry_video_join_entry_pk_video_pk_pk",
"columns": [
"entry_pk",
"video_pk"
]
"columns": ["entry_pk", "video_pk"]
}
},
"uniqueConstraints": {
"entry_video_join_slug_unique": {
"name": "entry_video_join_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
}
},
"policies": {},
@@ -1764,25 +1651,17 @@
"videos_id_unique": {
"name": "videos_id_unique",
"nullsNotDistinct": false,
"columns": [
"id"
]
"columns": ["id"]
},
"videos_path_unique": {
"name": "videos_path_unique",
"nullsNotDistinct": false,
"columns": [
"path"
]
"columns": ["path"]
},
"rendering_unique": {
"name": "rendering_unique",
"nullsNotDistinct": true,
"columns": [
"rendering",
"part",
"version"
]
"columns": ["rendering", "part", "version"]
}
},
"policies": {},
@@ -1879,12 +1758,8 @@
"tableFrom": "watchlist",
"tableTo": "profiles",
"schemaTo": "kyoo",
"columnsFrom": [
"profile_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["profile_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1893,12 +1768,8 @@
"tableFrom": "watchlist",
"tableTo": "shows",
"schemaTo": "kyoo",
"columnsFrom": [
"show_pk"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["show_pk"],
"columnsTo": ["pk"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1907,12 +1778,8 @@
"tableFrom": "watchlist",
"tableTo": "entries",
"schemaTo": "kyoo",
"columnsFrom": [
"next_entry"
],
"columnsTo": [
"pk"
],
"columnsFrom": ["next_entry"],
"columnsTo": ["pk"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -1920,10 +1787,7 @@
"compositePrimaryKeys": {
"watchlist_profile_pk_show_pk_pk": {
"name": "watchlist_profile_pk_show_pk_pk",
"columns": [
"profile_pk",
"show_pk"
]
"columns": ["profile_pk", "show_pk"]
}
},
"uniqueConstraints": {},
@@ -1941,12 +1805,7 @@
"kyoo.entry_type": {
"name": "entry_type",
"schema": "kyoo",
"values": [
"episode",
"movie",
"special",
"extra"
]
"values": ["episode", "movie", "special", "extra"]
},
"kyoo.genres": {
"name": "genres",
@@ -1980,21 +1839,12 @@
"kyoo.show_kind": {
"name": "show_kind",
"schema": "kyoo",
"values": [
"serie",
"movie",
"collection"
]
"values": ["serie", "movie", "collection"]
},
"kyoo.show_status": {
"name": "show_status",
"schema": "kyoo",
"values": [
"unknown",
"finished",
"airing",
"planned"
]
"values": ["unknown", "finished", "airing", "planned"]
},
"kyoo.role_kind": {
"name": "role_kind",
@@ -2012,13 +1862,7 @@
"kyoo.watchlist_status": {
"name": "watchlist_status",
"schema": "kyoo",
"values": [
"watching",
"rewatching",
"completed",
"dropped",
"planned"
]
"values": ["watching", "rewatching", "completed", "dropped", "planned"]
}
},
"schemas": {

File diff suppressed because it is too large Load Diff

View File

@@ -169,6 +169,13 @@
"when": 1763924097229,
"tag": "0023_mqueue-priority",
"breakpoints": true
},
{
"idx": 24,
"version": "7",
"when": 1763932730557,
"tag": "0024_fix-season-count",
"breakpoints": true
}
]
}

View File

@@ -157,7 +157,7 @@ export const mapProgress = ({ aliased }: { aliased: boolean }) => {
const ret = {
time: coalesce(time, sql<number>`0`),
percent: coalesce(percent, sql<number>`0`),
playedDate: sql`to_char(${playedDate}, 'YYYY-MM-DD"T"HH24:MI:SS"Z"')`,
playedDate: sql<string>`to_char(${playedDate}, 'YYYY-MM-DD"T"HH24:MI:SS"Z"')`,
videoId: sql<string>`${videoId}`,
};
if (!aliased) return ret;

View File

@@ -27,9 +27,9 @@ function getRedirectToImageHandler({ filter }: { filter?: SQL }) {
status,
redirect,
}: {
params: { id: string; image: "poster" | "thumbnail" | "banner" | "logo" };
params: { id?: string; image: "poster" | "thumbnail" | "banner" | "logo" };
headers: { "accept-language": string };
query: { quality: "high" | "medium" | "low" };
query: { quality?: "high" | "medium" | "low" };
set: Context["set"];
status: Context["status"];
redirect: Context["redirect"];
@@ -212,12 +212,9 @@ export const imagesH = new Elysia({ tags: ["images"] })
},
)
.guard({
headers: t.Object(
{
headers: t.Object({
"accept-language": AcceptLanguage(),
},
{ additionalProperties: true },
),
}),
})
.get(
"/studios/:id/logo",
@@ -307,6 +304,9 @@ export const imagesH = new Elysia({ tags: ["images"] })
description: "The type of image to retrive.",
}),
}),
headers: t.Object({
"accept-language": AcceptLanguage(),
}),
})
.get(
"/movies/:id/:image",

View File

@@ -2,7 +2,7 @@ import { db } from "~/db";
import { showStudioJoin, studios, studioTranslations } from "~/db/schema";
import { conflictUpdateAllExcept } from "~/db/utils";
import type { SeedStudio } from "~/models/studio";
import { enqueueOptImage, flushImageQueue, ImageTask } from "../images";
import { enqueueOptImage, flushImageQueue, type ImageTask } from "../images";
type StudioI = typeof studios.$inferInsert;
type StudioTransI = typeof studioTranslations.$inferInsert;

View File

@@ -39,7 +39,7 @@ export const seasons = schema.table(
startAir: date(),
endAir: date(),
entriesCount: integer().notNull(),
entriesCount: integer().notNull().default(0),
availableCount: integer().notNull().default(0),
externalId: season_extid(),

View File

@@ -20,6 +20,7 @@ const [resp, body] = await createVideo([
title: "mia",
episodes: [{ season: 1, episode: 13 }],
from: "test",
history: [],
},
part: null,
path: "/video/mia s1e13.mkv",
@@ -33,6 +34,7 @@ const [resp, body] = await createVideo([
episodes: [{ season: 2, episode: 1 }],
years: [2017],
from: "test",
history: [],
},
part: null,
path: "/video/mia 2017 s2e1.mkv",
@@ -41,7 +43,7 @@ const [resp, body] = await createVideo([
for: [{ slug: `${madeInAbyss.slug}-s2e1` }],
},
{
guess: { title: "bubble", from: "test" },
guess: { title: "bubble", from: "test", history: [] },
part: null,
path: "/video/bubble.mkv",
rendering: "sha5",