- Rebranding: chessu → Michess (Header, Footer, Metadata, Session-Cookie) - Stockfish KI-Integration: 6 Schwierigkeitsgrade (Anfänger bis Meister) - Admin-Panel: Nutzerverwaltung, Sperren/Entsperren, Git-Pull-Update - Freundessystem: Anfragen, Freundesliste, Nutzersuche - DB-Schema: role, banned, friend_request, friendship Tabellen - Docker: NAS-optimiertes docker-compose.yml mit PostgreSQL Healthcheck - Stockfish binary via apk im Alpine-Image installiert - .env.example für einfaches Deployment - scripts/update.sh für manuelles NAS-Update - Brain.md + Plan.md als Projekt-Gedächtnis Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
export interface Game {
|
|
id?: number;
|
|
pgn?: string;
|
|
white?: User;
|
|
black?: User;
|
|
winner?: "white" | "black" | "draw";
|
|
endReason?: "draw" | "checkmate" | "stalemate" | "repetition" | "insufficient" | "abandoned";
|
|
host?: User;
|
|
code?: string;
|
|
unlisted?: boolean;
|
|
timeout?: number;
|
|
observers?: User[];
|
|
startedAt?: number;
|
|
endedAt?: number;
|
|
vsAi?: boolean;
|
|
aiLevel?: number;
|
|
}
|
|
|
|
export interface User {
|
|
id?: number | string; // string for guest IDs
|
|
name?: string | null;
|
|
email?: string;
|
|
wins?: number;
|
|
losses?: number;
|
|
draws?: number;
|
|
role?: "user" | "admin";
|
|
|
|
// mainly for players, not spectators
|
|
connected?: boolean;
|
|
disconnectedOn?: number;
|
|
}
|
|
|
|
export interface FriendRequest {
|
|
id?: number;
|
|
fromId?: number;
|
|
toId?: number;
|
|
fromName?: string;
|
|
toName?: string;
|
|
status?: "pending" | "accepted" | "rejected";
|
|
createdAt?: string;
|
|
}
|
|
|
|
export interface Friendship {
|
|
id?: number;
|
|
userId?: number;
|
|
friendId?: number;
|
|
friendName?: string;
|
|
wins?: number;
|
|
losses?: number;
|
|
draws?: number;
|
|
createdAt?: string;
|
|
}
|