floriferous: update svelte pages to new +page and +server syntax

This commit is contained in:
Thomas 2022-08-21 17:46:20 +01:00
parent ede74c2461
commit 4d40f3df40
4 changed files with 66 additions and 70 deletions

View file

@ -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)
};
}
};

View 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
});
}
};

View file

@ -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"> <script lang="ts">
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { slide } from 'svelte/transition'; import { slide } from 'svelte/transition';
import type { PageData } from './$types.ts';
import { FloriferousGame } from '../../../lib/floriferous'; import { FloriferousGame } from '../../../lib/floriferous';
import type { FloriferousPlayer } from '../../../lib/floriferous'; import type { FloriferousPlayer } from '../../../lib/floriferous';
@ -26,17 +13,14 @@
import ApiPasswordFrom from '../../../components/games/ApiPasswordForm.svelte'; import ApiPasswordFrom from '../../../components/games/ApiPasswordForm.svelte';
import type { ApiGamesFloriferousPostRequest } from '$lib/floriferous/floriferous-api-controller'; 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 apiPassword = '';
let players: FloriferousPlayer[] = []; let players: FloriferousPlayer[] = [];
let isWinnerVisible = false; let isWinnerVisible = false;
let isSaveSubmitting = false; let isSaveSubmitting = false;
let isGameSaved = false; let isGameSaved = false;
onMount(() => {
console.log({ previousGames });
});
function handleShowWinner() { function handleShowWinner() {
isWinnerVisible = true; isWinnerVisible = true;
} }

View 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)
};
};