fix: updated from 9.3.3 to 15

This commit is contained in:
2026-05-19 20:22:37 +01:00
parent 27806f438f
commit 8589c83fb8
18 changed files with 45 additions and 76 deletions
+1 -22
View File
@@ -43,7 +43,7 @@ export async function GET(request: Request) {
const rows = await query(sql);
// Transform to proper structure
const drivers: DriverWithServer[] = rows.map((row: any) => ({
const drivers: DriverWithServer[] = rows.map((row: unkown) => ({
driver_guid: row.driver_guid,
driver_name: row.driver_name,
driver_team: row.driver_team,
@@ -85,24 +85,3 @@ export async function GET(request: Request) {
);
}
}
// POST endpoint for updating driver data (optional, for future use)
export async function POST(request: Request) {
try {
const body = await request.json();
// Add your update logic here
// Example: Update driver rank, stats, etc.
return NextResponse.json({
success: true,
message: 'Driver updated',
});
} catch (error) {
console.error('Error updating driver:', error);
return NextResponse.json(
{ success: false, error: 'Failed to update driver' },
{ status: 500 }
);
}
}
+1 -1
View File
@@ -51,7 +51,7 @@ export async function POST(request: Request) {
}
// Check if event exists and is open
const eventCheck: any = await queryOne(
const eventCheck: unknown = await queryOne(
`SELECT event_id, event_status, max_participants,
(SELECT COUNT(*) FROM event_registrations
WHERE event_id = $1 AND status = 'REGISTERED') as current_registrations
+3 -3
View File
@@ -31,7 +31,7 @@ async function updateRankCache() {
);
rankCache.clear();
users.forEach((row: any) => {
users.forEach((row: unknown) => {
rankCache.set(row.driver_guid.toString(), {
rank: row.rank_position,
rating: row.user_rank
@@ -112,7 +112,7 @@ export async function GET(request: Request) {
const heartbeat = setInterval(() => {
try {
controller.enqueue(encoder.encode(`: heartbeat\n\n`));
} catch (error) {
} catch {
clearInterval(heartbeat);
}
}, 30000);
@@ -124,7 +124,7 @@ export async function GET(request: Request) {
clearInterval(heartbeat);
try {
controller.close();
} catch (error) {
} catch {
// Controller already closed
}
});
+1 -1
View File
@@ -36,7 +36,7 @@ async function getConnectedDrivers() {
const rows = await query(sql);
return rows.map((row: any) => ({
return rows.map((row: unknown) => ({
driver_guid: row.driver_guid,
driver_name: row.driver_name,
driver_team: row.driver_team,
+2 -2
View File
@@ -107,7 +107,7 @@ export default async function EventDetailPage({
params: Promise<{ event_id: number }>;
}) {
const { event_id } = await params;
const event: any = await getEvent(event_id);
const event: unknown = await getEvent(event_id);
if (!event) {
notFound();
}
@@ -205,7 +205,7 @@ export default async function EventDetailPage({
{registrations.length === 0 ? (
<p className="text-white/40 text-sm">No registrations yet</p>
) : (
registrations.map((reg: any, index: number) => (
registrations.map((reg: unknown, index: number) => (
<div key={reg.registration_id} className="border border-white/10 p-3">
<div className="flex items-start justify-between mb-2">
<div className="flex items-center space-x-2">
-24
View File
@@ -2,26 +2,11 @@
// Event championship results page with auto-refresh
import { query } from '@/lib/db';
import { TrophyIcon } from '@/components/ui/icons';
import Link from 'next/link';
import EventResultsClient from '@/components/events/EventResultsClient';
export const dynamic = "force-dynamic";
interface TeamStanding {
team_id: number;
team_name: string;
total_points: number;
races_participated: number;
best_finish: number;
drivers: {
driver_guid: string;
driver_name: string;
position: number;
points_awarded: number;
}[];
}
async function getEventResults(eventId: number) {
if (eventId == undefined) {
@@ -72,15 +57,6 @@ async function getEventResults(eventId: number) {
return { event, standings };
}
function getPositionColor(position: number): string {
if (position === 1) return 'bg-yellow-500/20 border-yellow-500/50 text-yellow-400';
if (position === 2) return 'bg-gray-400/20 border-gray-400/50 text-gray-300';
if (position === 3) return 'bg-orange-600/20 border-orange-600/50 text-orange-400';
return 'bg-white/5 border-white/10 text-white/60';
}
export default async function EventResultsPage({
params,
+1 -1
View File
@@ -67,7 +67,7 @@ export default async function EventsPage() {
<p className="text-white/20 text-sm mt-2">Check back soon for new racing events</p>
</div>
) : (
events.map((event: any) => {
events.map((event: unknown) => {
const isOpen = event.event_status === 'OPEN';
const isFull = event.registrations_count >= event.max_participants;
const deadlinePassed = event.registration_deadline && new Date(event.registration_deadline) < new Date();
+3 -3
View File
@@ -12,7 +12,7 @@ interface LiveData {
server_track: string;
server_config: string;
connected_players: number;
cars: any[];
cars: unknown[];
}
async function getLiveData(): Promise<LiveData[]> {
@@ -32,7 +32,7 @@ async function getLiveData(): Promise<LiveData[]> {
// For each server, get connected cars with their positions
const liveData = await Promise.all(
servers.map(async (server: any) => {
servers.map(async (server: unknown) => {
const carsSql = `
SELECT
u.driver_guid,
@@ -47,7 +47,7 @@ async function getLiveData(): Promise<LiveData[]> {
const cars = await query(carsSql, [server.server_id]);
// Add mock data for positions (real data will come from telemetry stream)
const carsWithPositions = cars.map((car: any, index: number) => ({
const carsWithPositions = cars.map((car: unknown, index: number) => ({
...car,
carID: index,
position: index + 1,
+16 -5
View File
@@ -1,6 +1,5 @@
'use client';
import Image from "next/image";
import { useState, useRef, useEffect, MouseEvent } from 'react';
// Configuration
@@ -113,8 +112,20 @@ export default function MusicPage() {
};
useEffect(() => {
void fetchTracks();
}, []);
let active = true;
const run = async () => {
const data = await fetchTracks();
if (!active) return;
setTracks(data);
};
void run();
return () => {
active = false;
};
}, [isPlaying]);
// Group tracks by theme
const tracksByTheme = tracks.reduce<Record<string, Track[]>>((acc, track) => {
@@ -338,7 +349,7 @@ export default function MusicPage() {
<div className="border border-white/10 bg-black overflow-hidden">
{isVideo ? (
<video
ref={mediaRef as any}
ref={mediaRef as unknown}
onTimeUpdate={handleTimeUpdate}
onEnded={nextTrack}
onPlay={() => setIsPlaying(true)}
@@ -379,7 +390,7 @@ export default function MusicPage() {
{/* Audio element (hidden) */}
<audio
ref={mediaRef as any}
ref={mediaRef as unknown}
onTimeUpdate={handleTimeUpdate}
onEnded={nextTrack}
onPlay={() => setIsPlaying(true)}
+2 -2
View File
@@ -44,8 +44,8 @@ async function getFilterOptions(): Promise<FilterOptions> {
const cars = await query(carsQuery);
return {
teams: teams.map((t: any) => t.driver_team),
carModels: cars.map((c: any) => c.car_model)
teams: teams.map((t: unknown) => t.driver_team),
carModels: cars.map((c: unknown) => c.car_model)
};
}