package com.example.demo.controller;

import com.example.demo.model.Student;
import com.example.demo.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;


@RestController
@RequestMapping("/students")
public class StudentController {
    @Autowired
    private StudentService studentService;

    @GetMapping(value = "/")
    public Flux<Student> getStudents() {
        return studentService.getStudents();
    }

    @GetMapping(value = "/{id}")
    public Mono<Student> findById(@PathVariable("id") Integer id) {
        return studentService.findById(id);
    }

    @PostMapping(value = "/")
    public Mono<Student> create(@RequestBody Student student) {
        return studentService.addStudent(student);
    }

    @PutMapping(value = "/{id}")
    public Mono<Student> update(@RequestBody Student student, @PathVariable("id") Integer id) {
        return studentService.update(student);
    }

    @DeleteMapping(value = "/{id}")
    public Mono<Void> delete(@PathVariable("id") Integer id) {
        return studentService.delete(id);
    }


}