Skip to content

Commit d5eeb23

Browse files
committed
version 1.0.1
1 parent 7cb8077 commit d5eeb23

File tree

3 files changed

+164
-1
lines changed

3 files changed

+164
-1
lines changed

README.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,52 @@
1+
## Listar Empleado
2+
Para listar los empleados registrados podemos usar de manera opcional los parametros:
3+
- page : página que se mostrará.
4+
- size : número de elementos por página.
5+
- sort : propiedad que pertenece a la entidad que se tomará para ordenar la lista.
6+
7+
Si no se añaden dichos parametros estos obtienen valores por defecto (page = 0, size = 3, sort = codEmpleado).
8+
9+
Request:
10+
```
11+
[ GET ] http://localhost:8080/empleados
12+
[ GET ] http://localhost:8080/empleados?page=0&size=3&sort=nombre
13+
```
14+
Response: `Estatus code: 200 OK`
15+
```
16+
[
17+
{
18+
"codEmpleado": "EM10001",
19+
"distrito": {
20+
"codDistrito": "DI01",
21+
"nombreDistrito": "Comas"
22+
},
23+
"estado": {
24+
"codEstado": "ES2",
25+
"nombreEstado": "ACTIVO"
26+
},
27+
"nombre": "KEVIN",
28+
"apellidos": "B",
29+
"dni": "00000000",
30+
"direccion": "DIRECCION",
31+
"telefono": "9999999",
32+
"email": "paledot01@gmail.com",
33+
"usuario": "kevinB",
34+
"contrasena": "$2a$10$Jtfxa0EuEjZrfQ4OvR4WbuqD00OBIfIp.5Sv33A7G8ya3xTI542nq",
35+
"roles": [
36+
{
37+
"codRol": "RL01",
38+
"nombreRol": "ROLE_ADMIN"
39+
},
40+
{
41+
"codRol": "RL02",
42+
"nombreRol": "ROLE_USER"
43+
}
44+
]
45+
},
46+
// ...
47+
]
48+
```
49+
150
![][img_1]
251

352
[img_1]: ./screenshot/img01_BD.png

extra/Bitacora_SFM_api.txt

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
empresa(3) -> EP1
2+
3+
estado(3) -> ES1
4+
distrito(4) -> DI01
5+
moneda(4) -> MN01
6+
talla(4) -> TL01
7+
color(4) -> CR01
8+
categoria(4) -> CT01
9+
estilo(4) -> ET01
10+
rol(4) -> RL01
11+
empleado(7) -> EM10001
12+
marca(7) -> MA10001
13+
modelo(7) -> MD10001
14+
calzado(8) -> CZ100001
15+
cliente(8) -> CL100001
16+
boleta(8) -> BL100001
17+
18+
19+
20+
BASE DE DATOS
21+
22+
--> utilizar una llave primaria compuesta como llave foranea [ https://stackoverflow.com/questions/10565846/use-composite-primary-key-as-foreign-key ]
23+
[ https://es.stackoverflow.com/questions/198599/como-asignar-una-llave-primaria-compuesta-como-llave-foranea-en-otra-tabla-con ]
24+
--> relacion entre producto-talla-color [ https://stackoverflow.com/questions/31747273/mysql-database-to-store-product-color-size-and-stock ]
25+
--> agrupacion de una llave compuesta [ https://es.stackoverflow.com/questions/404584/error-en-postgresql-no-hay-restricci%C3%B3n-unique-que-coincida-con-las-columnas-dad ]
26+
--> UPDATE-JOIN actualizar datos de una tabla en funcion de los valores de otra tabla [ https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-update-join/ ]
27+
28+
29+
Importante: cuando pasa una llave a otra tabla como llave foranea esta TABLA_1 debe verificar que dicha llave sea unica, porlo que si la tabla de donde proviene la llave solo
30+
tiene una sola llave primaria no tendremos que hacer nada por defecto esa llave es unica, pero que pasa si la otra tabla(TABLA_2) tiene una llave compuesta por 2 o
31+
mas llaves primarias, en este caso podemos agregar la restriccion UNIQUE a todos las llaves primarias que tiene(EN TABLA_2), pero al registrar estas
32+
llaves(EN TABLA_1) deben respetar que sean UNICAS de manera individual lo cual en la mayoria de los casos no es lo que se necesita. La mejor seria agrupar
33+
(EN TABLA_1) esta llave compuesta para que se identifique ambos valores como una sola llave y cuyo valor "en conjunto" es UNICO asi:
34+
35+
CONSTRAINT fk_calzado1 FOREIGN KEY(cod_modelo,cod_color) REFERENCES modelo_color(cod_modelo,cod_color) ON DELETE CASCADE
36+
37+
ahora sabemos que una tabla intermedia que tiene como identificador una llave compuesta(2 o mas llaves primarias) puede pasar a otra como llave foranea, PERO
38+
para esto tenemos que enviar todas estas llaves a la otra tabla lo cual no es conveniente cuando se tiene más de 3 llaves primarias, para esto podemos crear
39+
un campo opcional que tambien sera identificado como llave primaria y será SOLO esta la que pasará a la otra tabla como identificador de esta tabla intermedia,
40+
para esto será necesario que identifiquemos adicionalmente este campo nuevo como UNIQUE ademas del PRIMARY KEY. Esto es necesario porque la tabla intermedia
41+
tendra multiples llaves primarias y al pasar SOLO un PK nada garantiza la UNICIDAD de los campos.
42+
43+
--> utilizar multiples Bases de Datos en un mismo proyecto [ https://www.baeldung.com/spring-boot-configure-multiple-datasources ]
44+
45+
1. en "application.properties" configurar las dos conexiones en la base de datos:
46+
47+
psql.url=jdbc:postgresql://localhost:5432/bd_sfm_psql
48+
psql.username=postgres
49+
psql.password=12345
50+
psql.driverClassName=org.postgresql.Driver
51+
52+
psql.hikari.connectionTimeout=44444
53+
54+
msql.url=jdbc:mysql://localhost:3306/bd_sfm_mysql
55+
msql.username=root
56+
msql.password=12345
57+
msql.driverClassName=com.mysql.cj.jdbc.Driver
58+
59+
-> "psql" y "msql" son dos alias que se colocan solo para diferenciar las dos conexiones, estas las usaremos en el siguiente paso
60+
para generar las conexiones.
61+
62+
2. se debe crear un archivo de configuracion PARA CADA Base de Datos que contendra 4 metodos:
63+
a. XEntityManagerFactory --> el que verificara el mapeo de la entidades para que coincidan con la de la base de datos
64+
b. XTransactionManager ----> el que verificara las transacciones
65+
c. XDataSource + XDataSourceProperties ----> los que conectaran con la base de datos en SI, aca necesitaremos los alias "psql","msql"
66+
67+
--> Jasper Studio
68+
- IMAGEN URL: si la imagen ya esta conectado a un parametro de tipo String, esta imagen se podra cargar tanto con una ubicacion de la imagen
69+
dentro del proyecto, como una direccion URL que de la imagen en internet.
70+
71+
--> Implementar seguridad Basica:
72+
1. implementar las 2 dependencias en el pom
73+
2. clase empleadoDetails service.
74+
3. securityconfig -> principal
75+
4. empleadoServicioImpl -> codificar el password, para registrar pass codificado
76+
77+
78+
79+
80+
81+
82+
--> Documentar una API
83+
0. https://springdoc.org/#Introduction
84+
0. https://editor.swagger.io/
85+
1. https://www.youtube.com/watch?v=U11UChfhdhI&ab_channel=TodoTIC
86+
2. https://www.youtube.com/watch?v=7ryyEjt2RDw&ab_channel=LaMalditaProgramadora
87+
3. https://www.youtube.com/watch?v=SdsaZ-t1QwA&ab_channel=MoonCode
88+
4. https://www.youtube.com/watch?v=-SzKqwgPTyk&ab_channel=SACAViXTech
89+
90+
-> EXCEPCION:
91+
- para crear excepciones personalizadas estas pueden extender de RuntimeException o Exception, la primera extiende de la
92+
segunda por lo que funciona con ambas, una diferencia es que si usamos la 2da necesitaremos declarar el Throws en el metodo
93+
que contiene el codigo de posible excepcion, pero si usamos la 1era ya NO, bastará con lanzar el constructor de la clase
94+
excepcion creada.
95+
96+
97+
--> Paginas con API REST de referencia:
98+
1. https://spring.io/guides/tutorials/rest/
99+
2. https://www.nigmacode.com/java/crear-api-rest-con-spring/
100+
3. https://www.makeuseof.com/rest-api-spring-boot-create/
101+
4. https://www.appsdeveloperblog.com/many-to-many-relationship-in-spring-boot-rest-jpa/
102+
103+
--> Otras:
104+
1. https://www.baeldung.com/spring-response-entity
105+
2. https://fakeapi.platzi.com/en/rest/products
106+
3. https://app.quicktype.io/
107+
4. https://json2csharp.com/code-converters/json-to-pojo
108+
5. https://www.moesif.com/blog/technical/api-design/Which-HTTP-Status-Code-To-Use-For-Every-CRUD-App/
109+
110+
--> Temitas por revisar
111+
1. BeanUtils.copyP -> copiar propiedades de un objeto a otro objeto.
112+
- ejempo [ https://itecnote.com/tecnote/java-jpa-update-only-specific-fields/ ]
113+
2. @DynamicUpdate
114+
3. HTTP PUT vs HTTP PATCH

src/main/java/com/cibertec/shoesformen_api/controller/EmpleadoController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class EmpleadoController {
4646
public ResponseEntity<List<Empleado>> getAll(
4747
@RequestParam(defaultValue = "0") Integer page,
4848
@RequestParam(defaultValue = "3") Integer size,
49-
@RequestParam(defaultValue = "nombre") String sort)
49+
@RequestParam(defaultValue = "codEmpleado") String sort)
5050
{
5151
List<Empleado> lista = empleadoServ.listar(page, size, sort);
5252
return new ResponseEntity<List<Empleado>>(lista, HttpStatus.OK);

0 commit comments

Comments
 (0)