This commit is contained in:
nmcnew
2024-09-14 14:35:02 -06:00
parent 693b204471
commit 7a1700ca71
25 changed files with 1751 additions and 338 deletions

14
src/hooks.client.ts Normal file
View File

@@ -0,0 +1,14 @@
import type { HandleClientError } from '@sveltejs/kit'
import { initializeClerkClient } from 'clerk-sveltekit/client'
import { PUBLIC_CLERK_PUBLISHABLE_KEY } from '$env/static/public'
initializeClerkClient(PUBLIC_CLERK_PUBLISHABLE_KEY, {
afterSignInUrl: '/admin/',
afterSignUpUrl: '/admin/',
signInUrl: '/sign-in',
signUpUrl: '/sign-up',
})
export const handleError: HandleClientError = async ({ error, event }) => {
console.error(error, event)
}

22
src/hooks.server.ts Normal file
View File

@@ -0,0 +1,22 @@
import type { Handle } from '@sveltejs/kit'
import { sequence } from '@sveltejs/kit/hooks'
import { handleClerk } from 'clerk-sveltekit/server'
import { CLERK_SECRET_KEY } from '$env/static/private'
import prisma from '$lib/prisma';
const newUserHandle: Handle = async function({event, resolve}) {
prisma.user.findUnique(
const result = await resolve(event);
console.log(result);
return result;
};
export const handle: Handle = sequence(
handleClerk(CLERK_SECRET_KEY, {
debug: true,
protectedPaths: ['/admin'],
signInUrl: '/sign-in',
}),
newUserHandle
)

View File

@@ -1,6 +0,0 @@
<script lang="ts">
</script>
<div>
<slot />
</div>

View File

@@ -1,27 +0,0 @@
<script lang="ts">
import { OneOnOneBracket } from "$lib/match";
export let bracket: OneOnOneBracket;
</script>
<div>
Bracket: {bracket.id}
<div>
Configuration:
<div>
Type: {bracket.config.bracketType}
</div>
<div>
Games Per Set: {bracket.config.gamesPerSet}
</div>
</div>
<div>
{#each bracket.setLookup as round, i }
<div>
Round {i}
{#each round as set }
{/each}
</div>
{/each}
</div>
</div>

View File

@@ -1,13 +0,0 @@
<script lang="ts">
import type { OneOnOneSet } from "$lib/match";
let set: OneOnOneSet;
</script>
<div>
<div>
{set.p1.name}
</div>
<div>
{set.p2.name}
</div>
</div>

View File

@@ -1,81 +0,0 @@
export class User {
id?: string;
name: string;
sponsor?: string;
roles: Array<string>;
profile: UserProfile;
constructor(name: string) {
this.name = name;
this.roles = new Array<string>();
this.profile = {};
}
}
export class UserProfile {
}
export interface Tournament {
id: string;
title: string;
slug?: string;
tournamentCreator: User;
tournamentAdmins: Array<User>;
events: Array<Event>;
}
export interface Event {
}
export enum PhaseType {
DOUBLE_ELIM = "Double Elimination",
SINGLE_ELIM = "Single Elimination",
ROUND_ROBIN = "Round Robin",
LADDER = "Ladder",
SWISS = "Swiss",
}
export interface Phase {
id: string;
brackets: Array<Bracket>;
config: PhaseConfig;
}
export interface Bracket {
}
export class PhaseConfig {
phaseType: PhaseType;
winningSetCount: number;
numPhaseWinners: number;
constructor(phaseType?: PhaseType, winningSetCount?: number, numPhaseWinners?: number) {
if(phaseType)
this.phaseType = phaseType;
else
this.phaseType = PhaseType.DOUBLE_ELIM;
if(winningSetCount)
this.winningSetCount = winningSetCount;
else
this.winningSetCount = 2;
if(numPhaseWinners)
this.numPhaseWinners = numPhaseWinners;
else
this.numPhaseWinners = 1;
}
}
export interface MatchIdentity {
name: string;
}
export interface Player extends MatchIdentity {
id: string;
}
export interface PlayerGroup extends MatchIdentity {
groupId: string;
players: Array<Player>;
}

6
src/lib/prisma.ts Normal file
View File

@@ -0,0 +1,6 @@
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
export default prisma;

View File

@@ -1,5 +1,32 @@
<script lang="ts">
import "../app.css";
import UserButton from 'clerk-sveltekit/client/UserButton.svelte'
import SignedIn from 'clerk-sveltekit/client/SignedIn.svelte'
import SignedOut from 'clerk-sveltekit/client/SignedOut.svelte'
</script>
<slot />
<nav class="fixed bg-slate-600 w-64 left-0 p-3 text-white h-screen z-20 flex flex-col">
<ul>
<li>Home</li>
<li>Events</li>
<li>Communities</li>
<li>Leagues</li>
<li class="relative end-0">
</li>
</ul>
<div class="mb-0">
<SignedIn>
<UserButton afterSignOutUrl="/" />
</SignedIn>
<SignedOut>
<a href="/sign-in">Sign in</a> <span>|</span> <a href="/sign-up">Sign up</a>
<!-- You could also use <SignInButton mode="modal" /> and <SignUpButton mode="modal" /> here -->
</SignedOut>
</div>
</nav>
<div class="ml-64 p-1">
<div class="container mx-auto">
<slot/>
</div>
</div>

View File

@@ -0,0 +1,9 @@
import prisma from '$lib/prisma';
import type { PageServerLoad } from './$types';
export const load = (async () => {
const response = await prisma.event.count();
return { eventCount: response };
}) satisfies PageServerLoad;

View File

@@ -1,2 +1,8 @@
<h1>Welcome to SvelteKit</h1>
<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p>
<script lang="ts">
import type { PageData } from "./$types";
export let data: PageData;
</script>
Event Count: {data.eventCount}

View File

@@ -0,0 +1 @@
<p>Site Admin Dashboard</p>

View File

@@ -1,3 +0,0 @@
<script lang="ts">
</script>

View File

@@ -0,0 +1,7 @@
<script lang="ts">
import SignIn from 'clerk-sveltekit/client/SignIn.svelte'
</script>
<div>
<SignIn redirectUrl="/admin" />
</div>

View File

@@ -0,0 +1,7 @@
<script lang="ts">
import SignUp from 'clerk-sveltekit/client/SignUp.svelte'
</script>
<div>
<SignUp redirectUrl="/admin" />
</div>

View File

@@ -0,0 +1,7 @@
<script lang="ts">
</script>
<form action="POST">
</form>

View File

@@ -0,0 +1,12 @@
<script lang="ts">
import UserProfile from "clerk-sveltekit/client/UserProfile.svelte";
</script>
<div class="w-full">
<div class="mx-auto">
<UserProfile/>
</div>
</div>