feat: Beispieluniversum im Seed und Notizen fuer 0.4.0
This commit is contained in:
@@ -458,6 +458,73 @@ async function seedLibrary(userId: string, titleIds: Map<string, string>) {
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Universum
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Die Erscheinungsreihenfolge berechnet Flimmer selbst — hier steht nur die
|
||||
* abweichende Story-Chronologie, damit die Seite zwei echte Reihenfolgen zeigt.
|
||||
*/
|
||||
const CHRONOLOGICAL = [
|
||||
"sternenpfad-null",
|
||||
"sternenpfad-1",
|
||||
"sternenpfad-akademie",
|
||||
"sternenpfad-2",
|
||||
"sternenpfad-serie",
|
||||
"sternenpfad-3",
|
||||
"sternenpfad-4",
|
||||
];
|
||||
|
||||
async function seedUniverse(ownerId: string, titleIds: Map<string, string>) {
|
||||
const existing = await prisma.universe.findUnique({
|
||||
where: { ownerId_slug: { ownerId, slug: "sternenpfad" } },
|
||||
select: { id: true },
|
||||
});
|
||||
if (existing) {
|
||||
await prisma.universe.delete({ where: { id: existing.id } });
|
||||
}
|
||||
|
||||
const universe = await prisma.universe.create({
|
||||
data: {
|
||||
ownerId,
|
||||
name: "Sternenpfad",
|
||||
slug: "sternenpfad",
|
||||
description:
|
||||
"Fünf Filme und zwei Serien. Die Kinoreihenfolge und die Story-Chronologie gehen auseinander — deshalb zwei Reihenfolgen.",
|
||||
orders: {
|
||||
create: [{ name: "Erscheinungsreihenfolge", kind: "RELEASE", isDefault: true }],
|
||||
},
|
||||
},
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
const itemIdByKey = new Map<string, string>();
|
||||
for (const key of CHRONOLOGICAL) {
|
||||
const titleId = titleIds.get(key);
|
||||
if (!titleId) continue;
|
||||
const item = await prisma.universeItem.create({
|
||||
data: { universeId: universe.id, titleId },
|
||||
select: { id: true },
|
||||
});
|
||||
itemIdByKey.set(key, item.id);
|
||||
}
|
||||
|
||||
const order = await prisma.universeOrder.create({
|
||||
data: { universeId: universe.id, name: "Chronologisch", kind: "CUSTOM" },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
await prisma.universeOrderItem.createMany({
|
||||
data: CHRONOLOGICAL.flatMap((key, index) => {
|
||||
const itemId = itemIdByKey.get(key);
|
||||
return itemId ? [{ orderId: order.id, itemId, position: index }] : [];
|
||||
}),
|
||||
});
|
||||
|
||||
return universe;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
async function main() {
|
||||
@@ -509,6 +576,15 @@ async function main() {
|
||||
console.log("Seed: Bibliothek und Sichtungen ...");
|
||||
await seedLibrary(admin.id, titleIds);
|
||||
|
||||
console.log("Seed: Universum ...");
|
||||
const universe = await seedUniverse(admin.id, titleIds);
|
||||
// Mit dem zweiten Konto teilen, damit die Freigabe sichtbar ist.
|
||||
await prisma.universeMember.upsert({
|
||||
where: { universeId_userId: { universeId: universe.id, userId: friend.id } },
|
||||
create: { universeId: universe.id, userId: friend.id, permission: "READ" },
|
||||
update: {},
|
||||
});
|
||||
|
||||
const watches = await prisma.watch.count({ where: { userId: admin.id } });
|
||||
const entries = await prisma.libraryEntry.count({ where: { userId: admin.id } });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user