mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
4466ba436b
## Description This PR ensures that the default prettier config is used for examples and templates. This config is compatible with `prettier@3` as well (upgrading prettier is bigger change that can be a future PR). ## Changes - Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will be needed upgrading to prettier@3) - Added `examples/.prettierrc.json` with default config (this will change every example) - Added `packages/create-next-app/templates/.prettierrc.json` with default config (this will change every template) ## Related - Fixes #54402 - Closes #54409
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import fetch from "node-fetch";
|
|
|
|
export type ChargeResult = {
|
|
status: string;
|
|
errorMessage?: string;
|
|
};
|
|
|
|
export async function chargeUser(
|
|
userId: string,
|
|
itemId: string,
|
|
quantity: number,
|
|
): Promise<ChargeResult> {
|
|
// TODO send request to the payments service that looks up the user's saved
|
|
// payment info and the cost of the item and attempts to charge their payment
|
|
// method.
|
|
console.log(`Charging user ${userId} for ${quantity} of item ${itemId}`);
|
|
try {
|
|
const response = await fetch("http://httpbin.org/get?status=success");
|
|
const body: any = await response.json();
|
|
return { status: body.args.status };
|
|
} catch (e: any) {
|
|
return { status: "failure", errorMessage: e.message };
|
|
}
|
|
}
|
|
|
|
export async function checkAndDecrementInventory(
|
|
itemId: string,
|
|
quantity: number,
|
|
): Promise<boolean> {
|
|
// TODO a database request that—in a single operation or transaction—checks
|
|
// whether there are `quantity` items remaining, and if so, decreases the
|
|
// total. Something like:
|
|
// const result = await db.collection('items').updateOne(
|
|
// { _id: itemId, numAvailable: { $gte: quantity } },
|
|
// { $inc: { numAvailable: -quantity } }
|
|
// )
|
|
// return result.modifiedCount === 1
|
|
console.log(`Reserving ${quantity} of item ${itemId}`);
|
|
return true;
|
|
}
|
|
|
|
export async function incrementInventory(
|
|
itemId: string,
|
|
quantity: number,
|
|
): Promise<boolean> {
|
|
// TODO increment inventory:
|
|
// const result = await db.collection('items').updateOne(
|
|
// { _id: itemId },
|
|
// { $inc: { numAvailable: quantity } }
|
|
// )
|
|
// return result.modifiedCount === 1
|
|
console.log(`Incrementing ${itemId} inventory by ${quantity}`);
|
|
return true;
|
|
}
|