| 44 | } |
| 45 | |
| 46 | export async function getShip(request: Request) { |
| 47 | const url = new URL(request.url) |
| 48 | const name = url.searchParams.get('name') |
| 49 | const endTime = Date.now() + getDelay(request) |
| 50 | invariantResponse(name, 'No name provided', { status: 400 }) |
| 51 | const ship = shipData.find( |
| 52 | (ship) => ship.name.toLowerCase() === name.toLowerCase(), |
| 53 | ) |
| 54 | await new Promise((resolve) => setTimeout(resolve, endTime - Date.now())) |
| 55 | invariantResponse(ship, `No ship with the name "${name}"`, { |
| 56 | status: 404, |
| 57 | }) |
| 58 | return { ...ship, fetchedAt: formatDate(new Date()) } |
| 59 | } |
| 60 | |
| 61 | export async function createShip(request: Request) { |
| 62 | const endTime = Date.now() + getDelay(request) |