UsersV2Controller.java

package com.dmasone.identity.api.controller;

import com.dmasone.identity.api.generated.UsersV2Api;
import com.dmasone.identity.api.generated.model.CreateUserRequestV2;
import com.dmasone.identity.api.generated.model.UpdateUserRequestV2;
import com.dmasone.identity.api.generated.model.UserResponseV2;
import com.dmasone.identity.service.UserServiceV2;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;

import java.util.UUID;

/**
 * HTTP adapter for the second version of the users API.
 *
 * <p>Version 2 extends the user contract with profile fields and partial updates
 * while keeping the controller thin and aligned with the OpenAPI-generated
 * interface.</p>
 */
@RestController
@RequiredArgsConstructor
public class UsersV2Controller implements UsersV2Api {

    private final UserServiceV2 userService;

    @Override
    public ResponseEntity<UserResponseV2> createUserV2(CreateUserRequestV2 request) {
        return ResponseEntity
                .status(201)
                .body(userService.createUser(request));
    }

    @Override
    public ResponseEntity<UserResponseV2> getUserByIdV2(UUID id) {
        return ResponseEntity.ok(userService.getUserById(id));
    }

    @Override
    public ResponseEntity<UserResponseV2> updateUserV2(UUID id, UpdateUserRequestV2 request) {
        return ResponseEntity.ok(userService.updateUser(id, request));
    }
}