mirror of
https://github.com/BradNut/boredgame
synced 2025-09-08 17:40:22 +00:00
Starting transactions for games.
This commit is contained in:
parent
eac53a993b
commit
b7d7f298bc
1 changed files with 109 additions and 74 deletions
|
|
@ -365,80 +365,115 @@ 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({
|
||||||
|
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(),
|
||||||
|
}).onConflictDoUpdate({
|
||||||
|
target: games.id, set: {
|
||||||
|
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(),
|
||||||
|
}
|
||||||
|
}).returning();
|
||||||
|
|
||||||
|
// TODO: Connect to everything else
|
||||||
|
// await transaction.insert()
|
||||||
});
|
});
|
||||||
await db.insert(games).values({
|
// await db.insert(games).values({
|
||||||
include: {
|
// include: {
|
||||||
mechanics: true,
|
// mechanics: true,
|
||||||
publishers: true,
|
// publishers: true,
|
||||||
designers: true,
|
// designers: true,
|
||||||
artists: true,
|
// artists: true,
|
||||||
expansions: true
|
// expansions: true
|
||||||
},
|
// },
|
||||||
where: {
|
// where: {
|
||||||
external_id: game.external_id
|
// external_id: game.external_id
|
||||||
},
|
// },
|
||||||
create: {
|
// create: {
|
||||||
name: game.name,
|
// name: game.name,
|
||||||
slug: kebabCase(game.name),
|
// slug: kebabCase(game.name),
|
||||||
description: game.description,
|
// description: game.description,
|
||||||
external_id: game.external_id,
|
// external_id: game.external_id,
|
||||||
url: externalUrl,
|
// url: externalUrl,
|
||||||
thumb_url: game.thumb_url,
|
// thumb_url: game.thumb_url,
|
||||||
image_url: game.image_url,
|
// image_url: game.image_url,
|
||||||
min_age: game.min_age || 0,
|
// min_age: game.min_age || 0,
|
||||||
min_players: game.min_players || 0,
|
// min_players: game.min_players || 0,
|
||||||
max_players: game.max_players || 0,
|
// max_players: game.max_players || 0,
|
||||||
min_playtime: game.min_playtime || 0,
|
// min_playtime: game.min_playtime || 0,
|
||||||
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: {
|
// categories: {
|
||||||
connect: categoryIds
|
// connect: categoryIds
|
||||||
},
|
// },
|
||||||
mechanics: {
|
// mechanics: {
|
||||||
connect: mechanicIds
|
// connect: mechanicIds
|
||||||
},
|
// },
|
||||||
publishers: {
|
// publishers: {
|
||||||
connect: publisherIds
|
// connect: publisherIds
|
||||||
},
|
// },
|
||||||
designers: {
|
// designers: {
|
||||||
connect: designerIds
|
// connect: designerIds
|
||||||
},
|
// },
|
||||||
artists: {
|
// artists: {
|
||||||
connect: artistIds
|
// connect: artistIds
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
update: {
|
// update: {
|
||||||
name: game.name,
|
// name: game.name,
|
||||||
slug: kebabCase(game.name),
|
// slug: kebabCase(game.name),
|
||||||
description: game.description,
|
// description: game.description,
|
||||||
external_id: game.external_id,
|
// external_id: game.external_id,
|
||||||
url: externalUrl,
|
// url: externalUrl,
|
||||||
thumb_url: game.thumb_url,
|
// thumb_url: game.thumb_url,
|
||||||
image_url: game.image_url,
|
// image_url: game.image_url,
|
||||||
min_age: game.min_age || 0,
|
// min_age: game.min_age || 0,
|
||||||
min_players: game.min_players || 0,
|
// min_players: game.min_players || 0,
|
||||||
max_players: game.max_players || 0,
|
// max_players: game.max_players || 0,
|
||||||
min_playtime: game.min_playtime || 0,
|
// min_playtime: game.min_playtime || 0,
|
||||||
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: {
|
// categories: {
|
||||||
connect: categoryIds
|
// connect: categoryIds
|
||||||
},
|
// },
|
||||||
mechanics: {
|
// mechanics: {
|
||||||
connect: mechanicIds
|
// connect: mechanicIds
|
||||||
},
|
// },
|
||||||
publishers: {
|
// publishers: {
|
||||||
connect: publisherIds
|
// connect: publisherIds
|
||||||
},
|
// },
|
||||||
designers: {
|
// designers: {
|
||||||
connect: designerIds
|
// connect: designerIds
|
||||||
},
|
// },
|
||||||
artists: {
|
// artists: {
|
||||||
connect: artistIds
|
// connect: artistIds
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue