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">
|
<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;
|
||||||
}
|
}
|
||||||
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