/**
 * @copyright 2026 NHCarrigan
 * @license Naomi's Public License
 * @author Naomi Carrigan
 */

import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Game, CreateGameDto, UpdateGameDto } from '@library/shared-types';

@Injectable({
  providedIn: 'root'
})
export class GamesService {
  private api = inject(ApiService);


  getAllGames(): Observable<Game[]> {
    return this.api.get<Game[]>('/games');
  }

  getGameById(id: string): Observable<Game | null> {
    return this.api.get<Game | null>(`/games/${id}`);
  }

  createGame(game: CreateGameDto): Observable<Game> {
    return this.api.post<Game>('/games', game);
  }

  updateGame(id: string, game: UpdateGameDto): Observable<Game> {
    return this.api.put<Game>(`/games/${id}`, game);
  }

  deleteGame(id: string): Observable<{ success: boolean }> {
    return this.api.delete<{ success: boolean }>(`/games/${id}`);
  }
}