Skip to content

Commit

Permalink
feat: support hidden coins in coins-list/coins-info
Browse files Browse the repository at this point in the history
  • Loading branch information
Eejit43 committed Jan 14, 2025
1 parent 47dc70b commit dfb1736
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 11 deletions.
3 changes: 2 additions & 1 deletion src/route-handlers/coins-info.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ export default function setupCoinsInfoRoute(fastify: FastifyInstance) {
coins: design.coins.map((coin) => {
// @ts-expect-error While this is marked as required, it doesn't need to be given to the end user
delete coin.id;
// @ts-expect-error While these are marked as required, they shouldn't be given to the end user
// @ts-expect-error While this is marked as required, it shouldn't be given to the end user
delete coin.obtained;
delete coin.upgrade;
delete coin.hidden;

return coin;
}),
Expand Down
26 changes: 16 additions & 10 deletions src/route-handlers/coins-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ export interface Coin {
comparison?: string;
obtained: boolean;
upgrade?: boolean;
hidden?: true;
}

export type DatabaseCoinDenomination = CoinDenomination<CoinDesign<Coin>> & { _id?: unknown; __v?: unknown }; // eslint-disable-line @typescript-eslint/naming-convention
Expand All @@ -65,19 +66,25 @@ export default function setupCoinsListRoutes(fastify: FastifyInstance) {
if (request.query.password !== process.env.COINS_PASSWORD)
return reply.send(JSON.stringify({ error: 'Invalid password!' }, null, 2));

let foundCoins = (await coinsModel.find({}).lean()) as DatabaseCoinDenomination[];
foundCoins = await patchCoinDatabase(foundCoins);
let foundDenominations = (await coinsModel.find({}).lean()) as DatabaseCoinDenomination[];
foundDenominations = await patchCoinDatabase(foundDenominations);

const sortedCoinInfo = foundCoins
const sortedDenominations = foundDenominations
.map((denomination) => {
delete denomination._id;
delete denomination.__v;

denomination.designs = denomination.designs.map((design) => {
design.coins = design.coins.filter((coin) => !coin.hidden);

return design;
});

return denomination;
})
.sort((a, b) => a.value - b.value);

reply.send(JSON.stringify(sortedCoinInfo, null, 2));
reply.send(JSON.stringify(sortedDenominations, null, 2));
});

fastify.post(
Expand Down Expand Up @@ -166,6 +173,7 @@ const denominationParameterOrder: (keyof DatabaseCoinDenomination)[] = ['_id', '
const designParameterOrder: (keyof CoinDesign<Coin>)[] = [
'name',
'id',
'nifc',
'note',
'years',
'active',
Expand All @@ -188,6 +196,7 @@ const coinParameterOrder: (keyof Coin)[] = [
'comparison',
'obtained',
'upgrade',
'hidden',
];

/**
Expand All @@ -211,12 +220,9 @@ async function patchCoinDatabaseDenomination(denomination: DatabaseCoinDenominat

const sortedDenomination = sortObject(newDenomination, denominationParameterOrder);

sortedDenomination.designs = sortedDenomination.designs.map((design) => sortObject(design, designParameterOrder));

sortedDenomination.designs = sortedDenomination.designs.map((design) => ({
...design,
coins: design.coins.map((coin) => sortObject(coin, coinParameterOrder)),
}));
sortedDenomination.designs = sortedDenomination.designs.map((design) =>
sortObject({ ...design, coins: design.coins.map((coin) => sortObject(coin, coinParameterOrder)) }, designParameterOrder),
);

if (JSON.stringify(denomination) !== JSON.stringify(sortedDenomination))
await coinsModel.replaceOne({ id: denomination.id }, sortedDenomination);
Expand Down

0 comments on commit dfb1736

Please sign in to comment.