package net.sevecek.dailyplanet;

import java.util.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.jdbc.core.*;
import org.springframework.stereotype.*;

@Repository
public class AutorRepository {

    @Autowired
    private JdbcTemplate pokladacDotazu;

    @Autowired
    private RowMapper<Autor> prevodnikTridyAutor;

    public List<Autor> findAll() {
        List<Autor> seznamAutoru = pokladacDotazu.query(
                "SELECT Autor_ID as id, KrestniJmeno, Prijmeni, Email, Telefon FROM autor",
                prevodnikTridyAutor);
        return seznamAutoru;
    }

    public Autor findById(UUID id) {

        Integer vek;
        vek = 150;
        UUID cislo;
        cislo = UUID.randomUUID();
        Autor kamil;
        kamil = new Autor(cislo);


        Autor jedenAutor = pokladacDotazu.queryForObject(
                "SELECT Autor_ID as id, KrestniJmeno, Prijmeni, Email, Telefon FROM autor WHERE Autor_ID = ?",
                prevodnikTridyAutor,
                id.toString());
        return jedenAutor;
    }

    public Autor update(Autor zaznamKUlozeni) {
        pokladacDotazu.update(
                "UPDATE autor SET KrestniJmeno = ?, Prijmeni = ?, Email = ?, Telefon = ? WHERE Autor_ID = ?",
                zaznamKUlozeni.getKrestniJmeno(),
                zaznamKUlozeni.getPrijmeni(),
                zaznamKUlozeni.getEmail(),
                zaznamKUlozeni.getTelefon(),
                zaznamKUlozeni.getId().toString());
        return zaznamKUlozeni;
    }

    public void remove(UUID id) {
        pokladacDotazu.update(
                "DELETE FROM autor WHERE Autor_ID = ?",
                id.toString());
    }

    public Autor insert(Autor zaznamKPridani) {
        pokladacDotazu.update(
                "INSERT INTO autor (Autor_ID, KrestniJmeno, Prijmeni, Email, Telefon) VALUES (?, ?, ?, ?, ?)",
                zaznamKPridani.getId().toString(),
                zaznamKPridani.getKrestniJmeno(),
                zaznamKPridani.getPrijmeni(),
                zaznamKPridani.getEmail(),
                zaznamKPridani.getTelefon());
        return zaznamKPridani;
    }

}
