floriferous: update svelte pages to new +page and +server syntax
This commit is contained in:
parent
ede74c2461
commit
4d40f3df40
4 changed files with 66 additions and 70 deletions
|
|
@ -1,51 +0,0 @@
|
|||
import { MONGO_URL, MONGO_DB_NAME, API_PASSWORD } from '$env/static/private';
|
||||
import type { RequestHandler, RequestHandlerOutput } from '@sveltejs/kit';
|
||||
|
||||
import { MongodbFloriferousGameRepository } from '../../../lib/floriferous/mongodb-floriferous-game-repository';
|
||||
import { FloriferousApiController } from '../../../lib/floriferous/floriferous-api-controller';
|
||||
import { SimplePasswordAuthenticator } from '../../../lib/simple-password-authenticator';
|
||||
|
||||
export const GET: RequestHandler = async (): Promise<RequestHandlerOutput> => {
|
||||
const controller = new FloriferousApiController(
|
||||
new MongodbFloriferousGameRepository(MONGO_URL, MONGO_DB_NAME),
|
||||
new SimplePasswordAuthenticator(API_PASSWORD)
|
||||
);
|
||||
|
||||
const response = await controller.getRecentGames(10);
|
||||
|
||||
return {
|
||||
status: 200,
|
||||
body: JSON.stringify(response)
|
||||
};
|
||||
};
|
||||
|
||||
export const POST: RequestHandler = async ({ request }) => {
|
||||
const controller = new FloriferousApiController(
|
||||
new MongodbFloriferousGameRepository(MONGO_URL, MONGO_DB_NAME),
|
||||
new SimplePasswordAuthenticator(API_PASSWORD)
|
||||
);
|
||||
|
||||
const isAuthenticated = controller.isRequestAuthenticated(request);
|
||||
|
||||
if (!isAuthenticated) {
|
||||
return {
|
||||
status: 401,
|
||||
body: 'Unauthorized'
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const requestBody = await request.json();
|
||||
const response = await controller.createNewGame(requestBody);
|
||||
|
||||
return {
|
||||
status: 200,
|
||||
body: JSON.parse(JSON.stringify(response))
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
status: 500,
|
||||
body: JSON.stringify(e)
|
||||
};
|
||||
}
|
||||
};
|
||||
51
src/routes/api/games/floriferous.json/+server.ts
Normal file
51
src/routes/api/games/floriferous.json/+server.ts
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
import { MONGO_URL, MONGO_DB_NAME, API_PASSWORD } from '$env/static/private';
|
||||
import type { error } from '@sveltejs/kit';
|
||||
import type { RequestHandler } from './$types';
|
||||
|
||||
import { MongodbFloriferousGameRepository } from '$lib/floriferous/mongodb-floriferous-game-repository';
|
||||
import { FloriferousApiController } from '$lib/floriferous/floriferous-api-controller';
|
||||
import { SimplePasswordAuthenticator } from '$lib/simple-password-authenticator';
|
||||
import {
|
||||
FloriferousGameApiPort,
|
||||
type FloriferousGameJson
|
||||
} from '$lib/floriferous/floriferous-game-api-port';
|
||||
|
||||
export const GET: RequestHandler = async () => {
|
||||
const controller = new FloriferousApiController(
|
||||
new MongodbFloriferousGameRepository(MONGO_URL, MONGO_DB_NAME),
|
||||
new SimplePasswordAuthenticator(API_PASSWORD)
|
||||
);
|
||||
|
||||
const response = await controller.getRecentGames(10);
|
||||
|
||||
return new Response(JSON.stringify(response), { status: 200 });
|
||||
};
|
||||
|
||||
export const POST = async ({ request }) => {
|
||||
const controller = new FloriferousApiController(
|
||||
new MongodbFloriferousGameRepository(MONGO_URL, MONGO_DB_NAME),
|
||||
new SimplePasswordAuthenticator(API_PASSWORD)
|
||||
);
|
||||
|
||||
const isAuthenticated = controller.isRequestAuthenticated(request);
|
||||
|
||||
if (!isAuthenticated) {
|
||||
return {
|
||||
status: 401,
|
||||
body: 'Unauthorized'
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const requestBody = await request.json();
|
||||
const response = await controller.createNewGame(requestBody);
|
||||
|
||||
return new Response(JSON.stringify(response), {
|
||||
status: 200
|
||||
});
|
||||
} catch (e) {
|
||||
return new Response(JSON.stringify(e), {
|
||||
status: 500
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
@ -1,20 +1,7 @@
|
|||
<script lang="ts" context="module">
|
||||
import type { Load } from '@sveltejs/kit';
|
||||
|
||||
export const load: Load = async ({ fetch }) => {
|
||||
const previousGames = await fetch('/api/games/floriferous.json').then((res) => res.json());
|
||||
return {
|
||||
status: 200,
|
||||
props: {
|
||||
previousGames: previousGames.map(FloriferousGameApiPort.jsonToGame)
|
||||
}
|
||||
};
|
||||
};
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import { onMount } from 'svelte';
|
||||
import { slide } from 'svelte/transition';
|
||||
import type { PageData } from './$types.ts';
|
||||
|
||||
import { FloriferousGame } from '../../../lib/floriferous';
|
||||
import type { FloriferousPlayer } from '../../../lib/floriferous';
|
||||
|
|
@ -26,17 +13,14 @@
|
|||
import ApiPasswordFrom from '../../../components/games/ApiPasswordForm.svelte';
|
||||
import type { ApiGamesFloriferousPostRequest } from '$lib/floriferous/floriferous-api-controller';
|
||||
|
||||
export let previousGames: FloriferousGame[];
|
||||
export let data: PageData;
|
||||
let previousGames: FloriferousGame[] = data.previousGames;
|
||||
let apiPassword = '';
|
||||
let players: FloriferousPlayer[] = [];
|
||||
let isWinnerVisible = false;
|
||||
let isSaveSubmitting = false;
|
||||
let isGameSaved = false;
|
||||
|
||||
onMount(() => {
|
||||
console.log({ previousGames });
|
||||
});
|
||||
|
||||
function handleShowWinner() {
|
||||
isWinnerVisible = true;
|
||||
}
|
||||
12
src/routes/games/floriferous/+page.ts
Normal file
12
src/routes/games/floriferous/+page.ts
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import {
|
||||
FloriferousGameApiPort,
|
||||
type FloriferousGameJson
|
||||
} from '$lib/floriferous/floriferous-game-api-port';
|
||||
import type { Load } from '@sveltejs/kit';
|
||||
|
||||
export const load: Load = async ({ fetch }): Promise<{ previousGames: FloriferousGameJson[] }> => {
|
||||
const previousGames = await fetch('/api/games/floriferous.json').then((res) => res.json());
|
||||
return {
|
||||
previousGames: previousGames.map(FloriferousGameApiPort.jsonToGame)
|
||||
};
|
||||
};
|
||||
Loading…
Reference in a new issue