Starting transactions for games.

This commit is contained in:
Bradley Shellnut 2024-02-09 17:49:39 -08:00
parent eac53a993b
commit b7d7f298bc

View file

@ -365,20 +365,7 @@ export async function createOrUpdateGame(locals: App.Locals, game: Game) {
console.log('categoryIds', categoryIds); console.log('categoryIds', categoryIds);
console.log('mechanicIds', mechanicIds); console.log('mechanicIds', mechanicIds);
await db.transaction(async (transaction) => { await db.transaction(async (transaction) => {
const const dbGame = await transaction.insert(games).values({
});
await db.insert(games).values({
include: {
mechanics: true,
publishers: true,
designers: true,
artists: true,
expansions: true
},
where: {
external_id: game.external_id
},
create: {
name: game.name, name: game.name,
slug: kebabCase(game.name), slug: kebabCase(game.name),
description: game.description, description: game.description,
@ -393,23 +380,8 @@ export async function createOrUpdateGame(locals: App.Locals, game: Game) {
max_playtime: game.max_playtime || 0, max_playtime: game.max_playtime || 0,
year_published: game.year_published || 0, year_published: game.year_published || 0,
last_sync_at: new Date(), last_sync_at: new Date(),
categories: { }).onConflictDoUpdate({
connect: categoryIds target: games.id, set: {
},
mechanics: {
connect: mechanicIds
},
publishers: {
connect: publisherIds
},
designers: {
connect: designerIds
},
artists: {
connect: artistIds
}
},
update: {
name: game.name, name: game.name,
slug: kebabCase(game.name), slug: kebabCase(game.name),
description: game.description, description: game.description,
@ -424,21 +396,84 @@ export async function createOrUpdateGame(locals: App.Locals, game: Game) {
max_playtime: game.max_playtime || 0, max_playtime: game.max_playtime || 0,
year_published: game.year_published || 0, year_published: game.year_published || 0,
last_sync_at: new Date(), last_sync_at: new Date(),
categories: {
connect: categoryIds
},
mechanics: {
connect: mechanicIds
},
publishers: {
connect: publisherIds
},
designers: {
connect: designerIds
},
artists: {
connect: artistIds
}
} }
}).returning();
// TODO: Connect to everything else
// await transaction.insert()
});
// await db.insert(games).values({
// include: {
// mechanics: true,
// publishers: true,
// designers: true,
// artists: true,
// expansions: true
// },
// where: {
// external_id: game.external_id
// },
// create: {
// name: game.name,
// slug: kebabCase(game.name),
// description: game.description,
// external_id: game.external_id,
// url: externalUrl,
// thumb_url: game.thumb_url,
// image_url: game.image_url,
// min_age: game.min_age || 0,
// min_players: game.min_players || 0,
// max_players: game.max_players || 0,
// min_playtime: game.min_playtime || 0,
// max_playtime: game.max_playtime || 0,
// year_published: game.year_published || 0,
// last_sync_at: new Date(),
// categories: {
// connect: categoryIds
// },
// mechanics: {
// connect: mechanicIds
// },
// publishers: {
// connect: publisherIds
// },
// designers: {
// connect: designerIds
// },
// artists: {
// connect: artistIds
// }
// },
// update: {
// name: game.name,
// slug: kebabCase(game.name),
// description: game.description,
// external_id: game.external_id,
// url: externalUrl,
// thumb_url: game.thumb_url,
// image_url: game.image_url,
// min_age: game.min_age || 0,
// min_players: game.min_players || 0,
// max_players: game.max_players || 0,
// min_playtime: game.min_playtime || 0,
// max_playtime: game.max_playtime || 0,
// year_published: game.year_published || 0,
// last_sync_at: new Date(),
// categories: {
// connect: categoryIds
// },
// mechanics: {
// connect: mechanicIds
// },
// publishers: {
// connect: publisherIds
// },
// designers: {
// connect: designerIds
// },
// artists: {
// connect: artistIds
// }
// }
}); });
} }