PermissionController.java

package com.learning.yasminishop.permission;

import com.learning.yasminishop.common.dto.APIResponse;
import com.learning.yasminishop.permission.dto.request.PermissionRequest;
import com.learning.yasminishop.permission.dto.response.PermissionResponse;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/permissions")
@RequiredArgsConstructor
@Slf4j
public class PermissionController {

    private final PermissionService permissionService;


    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public APIResponse<PermissionResponse> create(@Valid @RequestBody PermissionRequest request) {
        PermissionResponse permissionResponse = permissionService.createPermission(request);

        return APIResponse.<PermissionResponse>builder()
                .result(permissionResponse)
                .build();
    }

    @GetMapping
    @ResponseStatus(HttpStatus.OK)
    public APIResponse<List<PermissionResponse>> getAll() {
        List<PermissionResponse> permissionResponses = permissionService.getALlPermissions();

        return APIResponse.<List<PermissionResponse>>builder()
                .result(permissionResponses)
                .build();
    }

    @DeleteMapping("/{permission}")
    @ResponseStatus(HttpStatus.OK)
    public APIResponse<Void> delete(@PathVariable String permission) {
        permissionService.deletePermission(permission);

        return APIResponse.<Void>builder()
                .build();
    }


}