Add initial project structure with user management and Base64 image support

- Create application properties for database configuration
- Implement user entity and DTO with Base64 image handling
- Add user controller for CRUD operations
- Introduce Base64 converter utility for image encoding/decoding
- Set up Maven wrapper and project dependencies
- Configure .gitignore and .gitattributes for environment consistency
This commit is contained in:
2026-01-21 10:12:54 +01:00
commit 9e97dcf6ee
27 changed files with 1451 additions and 0 deletions

140
BASE64_IMAGE_GUIDE.md Normal file
View File

@@ -0,0 +1,140 @@
# Guía: Crear Usuaria con Imagen en Base64
## Descripción General
Ahora puedes crear una usuaria con una imagen enviando la imagen como una cadena Base64 en el JSON del POST request. El sistema se encargará de convertir automáticamente el Base64 a bytes para almacenarla en la base de datos.
## Cambios Realizados
### 1. **UsuariaDto.java**
- Cambié el campo `img` de `byte[]` a `String`
- Ahora acepta Base64 en lugar de bytes
### 2. **Base64Converter.java** (Nuevo)
- Clase utilitaria con métodos para convertir entre Base64 y bytes
- Incluye manejo de errores para Base64 inválido
### 3. **UsuariaMapper.java**
- Integración con MapStruct para convertir automáticamente:
- `toEntity()`: Convierte `String` (Base64) → `byte[]`
- `toDto()`: Convierte `byte[]``String` (Base64)
- `partialUpdate()`: Maneja actualizaciones parciales
## Cómo Usar
### Crear Usuaria con Imagen
```bash
POST http://localhost:8080/usuaria
Content-Type: application/json
{
"id": 80,
"fechaElim": null,
"fechaNac": "2026-12-08",
"img": "kjhadfjklaghshjldfgajhsdf==",
"nombre": "pasda",
"pass": "asdad",
"username": "asdad",
"idTipoUsuario": null
}
```
### Obtener Usuaria (La imagen se devuelve en Base64)
```bash
GET http://localhost:8080/usuaria/80
```
Response:
```json
{
"id": 80,
"fechaElim": null,
"fechaNac": "2026-12-08",
"img": "kjhadfjklaghshjldfgajhsdf==",
"nombre": "pasda",
"pass": "asdad",
"username": "asdad",
"idTipoUsuario": null
}
```
## Notas Importantes
1. **Base64 Válido**: La cadena debe ser Base64 válido. Si no lo es, se guardará como `null`.
2. **Imagen Opcional**: Si no envías el campo `img` o es `null`, se almacenará como `null`.
3. **Conversión Automática**: Todo ocurre automáticamente gracias a MapStruct. No necesitas hacer nada más.
## Generación de Base64
Para generar una cadena Base64 de una imagen, puedes usar:
### En JavaScript (Frontend):
```javascript
const file = document.getElementById('imageInput').files[0];
const reader = new FileReader();
reader.onload = (e) => {
const base64String = e.target.result.split(',')[1];
// Usar base64String en el JSON
};
reader.readAsDataURL(file);
```
### En Java:
```java
import java.util.Base64;
import java.nio.file.Files;
import java.nio.file.Paths;
byte[] imageBytes = Files.readAllBytes(Paths.get("path/to/image.png"));
String base64String = Base64.getEncoder().encodeToString(imageBytes);
```
### En Python:
```python
import base64
with open('image.png', 'rb') as f:
base64_string = base64.b64encode(f.read()).decode('utf-8')
```
## Errores Comunes
1. **Invalid Base64**: Si envías una cadena que no sea Base64 válido, se ignorará y se guardará como `null`.
2. **Null String**: Si el campo `img` es `null`, se guardará como `null` en la base de datos.
## Arquitectura de la Solución
```
UsuariaController (POST)
UsuariaDto (img: String)
UsuariaMapper.toEntity()
Base64Converter.base64ToBytes()
Usuaria Entity (img: byte[])
UsuariaRepository.save()
Base de Datos (BLOB)
```
Cuando obtienes la usuaria:
```
Base de Datos (BLOB)
Usuaria Entity (img: byte[])
UsuariaMapper.toDto()
Base64Converter.bytesToBase64()
UsuariaDto (img: String)
Response JSON
```