mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-12-11 07:35:21 -05:00
Handle duplicated studios (#1202)
This commit is contained in:
commit
6f07e51a07
@ -4,6 +4,7 @@ import { showStudioJoin, studios, studioTranslations } from "~/db/schema";
|
|||||||
import { conflictUpdateAllExcept, sqlarr, unnestValues } from "~/db/utils";
|
import { conflictUpdateAllExcept, sqlarr, unnestValues } from "~/db/utils";
|
||||||
import type { SeedStudio } from "~/models/studio";
|
import type { SeedStudio } from "~/models/studio";
|
||||||
import { record } from "~/otel";
|
import { record } from "~/otel";
|
||||||
|
import { uniqBy } from "~/utils";
|
||||||
import { enqueueOptImage, flushImageQueue, type ImageTask } from "../images";
|
import { enqueueOptImage, flushImageQueue, type ImageTask } from "../images";
|
||||||
|
|
||||||
type StudioI = typeof studios.$inferInsert;
|
type StudioI = typeof studios.$inferInsert;
|
||||||
@ -15,6 +16,7 @@ export const insertStudios = record(
|
|||||||
if (!seed?.length) return [];
|
if (!seed?.length) return [];
|
||||||
|
|
||||||
return await db.transaction(async (tx) => {
|
return await db.transaction(async (tx) => {
|
||||||
|
seed = uniqBy(seed!, (x) => x.slug);
|
||||||
const vals: StudioI[] = seed.map((x) => {
|
const vals: StudioI[] = seed.map((x) => {
|
||||||
const { translations, ...item } = x;
|
const { translations, ...item } = x;
|
||||||
return item;
|
return item;
|
||||||
|
|||||||
@ -29,7 +29,7 @@ export function getFile(path: string): BunFile | S3File {
|
|||||||
return Bun.file(path);
|
return Bun.file(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function uniqBy<T>(a: T[], key: (val: T) => string) {
|
export function uniqBy<T>(a: T[], key: (val: T) => string): T[] {
|
||||||
const seen: Record<string, boolean> = {};
|
const seen: Record<string, boolean> = {};
|
||||||
return a.filter((item) => {
|
return a.filter((item) => {
|
||||||
const k = key(item);
|
const k = key(item);
|
||||||
|
|||||||
@ -10,7 +10,7 @@ export const Collection = z
|
|||||||
slug: z.string(),
|
slug: z.string(),
|
||||||
name: z.string(),
|
name: z.string(),
|
||||||
original: z.object({
|
original: z.object({
|
||||||
name: z.string(),
|
name: z.string().nullable(),
|
||||||
latinName: z.string().nullable(),
|
latinName: z.string().nullable(),
|
||||||
language: z.string(),
|
language: z.string(),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -11,7 +11,7 @@ export const Movie = z
|
|||||||
slug: z.string(),
|
slug: z.string(),
|
||||||
name: z.string(),
|
name: z.string(),
|
||||||
original: z.object({
|
original: z.object({
|
||||||
name: z.string(),
|
name: z.string().nullable(),
|
||||||
latinName: z.string().nullable(),
|
latinName: z.string().nullable(),
|
||||||
language: z.string(),
|
language: z.string(),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -12,7 +12,7 @@ export const Serie = z
|
|||||||
slug: z.string(),
|
slug: z.string(),
|
||||||
name: z.string(),
|
name: z.string(),
|
||||||
original: z.object({
|
original: z.object({
|
||||||
name: z.string(),
|
name: z.string().nullable(),
|
||||||
latinName: z.string().nullable(),
|
latinName: z.string().nullable(),
|
||||||
language: z.string(),
|
language: z.string(),
|
||||||
}),
|
}),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user