diff --git a/src/api/apiService.ts b/src/api/apiService.ts index d52f18c..4ac1ceb 100644 --- a/src/api/apiService.ts +++ b/src/api/apiService.ts @@ -1,5 +1,5 @@ import { authStore } from '$stores/authStore'; -import { redirect } from '@sveltejs/kit'; +import { redirect, type RequestEvent } from '@sveltejs/kit'; import { redisSessionManager } from '$stores/redisSessionManager'; import { env } from '$env/dynamic/private'; @@ -35,7 +35,7 @@ async function fetchAPI(endpoint: string, method: string = 'GET', body?: object, } export async function fetchAPIEvent( - event: object, + event: RequestEvent, endpoint: string, method: string = 'GET', body?: object diff --git a/src/api/authService.ts b/src/api/authService.ts index 157c124..4ca9b46 100644 --- a/src/api/authService.ts +++ b/src/api/authService.ts @@ -1,9 +1,10 @@ import fetchAPI, { fetchAPIEvent } from '$api/apiService'; import { authStore } from '$stores/authStore'; import { redisSessionManager } from '$stores/redisSessionManager'; +import type { RequestEvent } from '@sveltejs/kit'; import { v4 as uuidv4 } from 'uuid'; -export const login = async (event: object, username: string, password: string) => { +export const login = async (event: RequestEvent, username: string, password: string) => { const token = btoa(`${username}:${password}`); await redisSessionManager.createSession(event.cookies, { token }, uuidv4()); if (!(await checkAuth(event))) { @@ -15,11 +16,11 @@ export const login = async (event: object, username: string, password: string) = return true; }; -export const logout = (event) => { +export const logout = (event: RequestEvent) => { return redisSessionManager.deleteCookie(event.cookies); }; -export const checkAuth = async (event: object) => { +export const checkAuth = async (event: RequestEvent) => { try { await fetchAPIEvent(event, '/api'); return true; diff --git a/src/api/lookupService.ts b/src/api/lookupService.ts index dcc0e6e..d274a04 100644 --- a/src/api/lookupService.ts +++ b/src/api/lookupService.ts @@ -1,21 +1,23 @@ import { fetchAPIEvent } from '$api/apiService'; +import type { CarModel, CupCategory, DriverCategory, SessionType, Track } from '$models/lookups'; +import type { RequestEvent } from '@sveltejs/kit'; -export const getCarModels = async (event: object) => { +export const getCarModels = async (event: RequestEvent): Promise => { return fetchAPIEvent(event, '/lookup/car-models'); }; -export const getCupCategories = async (event: object) => { +export const getCupCategories = async (event: RequestEvent): Promise => { return fetchAPIEvent(event, '/lookup/cup-categories'); }; -export const getDriverCategories = async (event: object) => { +export const getDriverCategories = async (event: RequestEvent): Promise => { return fetchAPIEvent(event, '/lookup/driver-categories'); }; -export const getSessionTypes = async (event: object) => { +export const getSessionTypes = async (event: RequestEvent): Promise => { return fetchAPIEvent(event, '/lookup/session-types'); }; -export const getTracks = async (event: object) => { +export const getTracks = async (event: RequestEvent): Promise => { return fetchAPIEvent(event, '/lookup/tracks'); }; diff --git a/src/api/serverService.ts b/src/api/serverService.ts index 14d3c2b..9644ea6 100644 --- a/src/api/serverService.ts +++ b/src/api/serverService.ts @@ -1,22 +1,74 @@ import { fetchAPIEvent } from '$api/apiService'; +import { + configFile, + type AssistRules, + type Config, + type ConfigFile, + type Configuration, + type Configurations, + type EventConfig, + type EventRules, + type ServerSettings +} from '$models/config'; +import type { Server } from '$models/server'; +import type { RequestEvent } from '@sveltejs/kit'; -export const getServers = async (event: object) => { +export const getServers = async (event: RequestEvent): Promise => { return fetchAPIEvent(event, '/server'); }; -export const getConfigFiles = async (event: object, serverId = '') => { +export const getConfigFiles = async ( + event: RequestEvent, + serverId: string +): Promise => { return fetchAPIEvent(event, `/server/${serverId}/config`); }; -export const getConfigFile = async (event: object, serverId = '', file = '') => { +export const getConfigFile = async ( + event: RequestEvent, + serverId: string, + file: ConfigFile +): Promise => { return fetchAPIEvent(event, `/server/${serverId}/config/${file}`); }; +export const getEventFile = async (event: RequestEvent, serverId: string): Promise => { + return fetchAPIEvent(event, `/server/${serverId}/config/${configFile.event}`); +}; + +export const getConfigurationFile = async ( + event: RequestEvent, + serverId: string +): Promise => { + return fetchAPIEvent(event, `/server/${serverId}/config/${configFile.configuration}`); +}; + +export const getAssistRulesFile = async ( + event: RequestEvent, + serverId: string +): Promise => { + return fetchAPIEvent(event, `/server/${serverId}/config/${configFile.assistRules}`); +}; + +export const getEventRulesFile = async ( + event: RequestEvent, + serverId: string +): Promise => { + return fetchAPIEvent(event, `/server/${serverId}/config/${configFile.eventRules}`); +}; + +export const getSettingsFile = async ( + event: RequestEvent, + serverId: string +): Promise => { + return fetchAPIEvent(event, `/server/${serverId}/config/${configFile.settings}`); +}; + export const updateConfig = async ( - event: object, + event: RequestEvent, serverId: string, - file: string, - newConfig?: object, + file: ConfigFile, + newConfig?: Config, override = false, restart = true ) => { @@ -28,18 +80,18 @@ export const updateConfig = async ( ); }; -export const restartService = async (event: object, serverId: number) => { +export const restartService = async (event: RequestEvent, serverId: number) => { return fetchAPIEvent(event, '/api/restart', 'POST', { serverId }); }; -export const startService = async (event: object, serverId: number) => { +export const startService = async (event: RequestEvent, serverId: number) => { return fetchAPIEvent(event, '/api/start', 'POST', { serverId }); }; -export const stopService = async (event: object, serverId: number) => { +export const stopService = async (event: RequestEvent, serverId: number) => { return fetchAPIEvent(event, '/api/stop', 'POST', { serverId }); }; -export const getServiceStatus = async (event: object, serviceName: number) => { +export const getServiceStatus = async (event: RequestEvent, serviceName: string) => { return fetchAPIEvent(event, `/api/${serviceName}`); }; diff --git a/src/app.css b/src/app.css index a461c50..ef90544 100644 --- a/src/app.css +++ b/src/app.css @@ -1 +1,4 @@ -@import "tailwindcss"; \ No newline at end of file +@import 'tailwindcss'; +@import './styles/button.css'; +@import './styles/loader.css'; +@import './styles/inputs.css'; diff --git a/src/components/ConfigEditor.svelte b/src/components/ConfigEditor.svelte index 582d9b0..7bede4f 100644 --- a/src/components/ConfigEditor.svelte +++ b/src/components/ConfigEditor.svelte @@ -1,10 +1,21 @@ - -
+ { + formLoading = true; + }} +>
@@ -16,8 +27,9 @@
@@ -47,13 +58,12 @@