diff --git a/.schema.sql.swp b/.schema.sql.swp new file mode 100644 index 0000000..580bd92 Binary files /dev/null and b/.schema.sql.swp differ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..668ce55 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM openjdk:8-jdk-alpine +COPY ./target/crud-1.0.jar app.jar +ENTRYPOINT [ "java", "-jar", "app.jar" ] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..710c9f8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,42 @@ +version: '3.9' +networks: + weather-network: + driver: bridge +services: + weather-databasePHP: + image: phpmyadmin/phpmyadmin + ports: + - "8085:80" + environment: + PMA_HOST: weather-database + MYSQL_ROOT_PASSWORD: 1936 + MYSQL_USER: Admin1 + MYSQL_PASSWORD: 1936 + networks: + - weather-network + weatherAPI: + container_name: weatherAPI + image: app01 + build: . + ports: + - 8080:8080 + environment: + - DATABASE_URL=jdbc:mysql://weather-database:3306/pb?useSSL=false&serverTimezone=UTC&useLegacyDateTimeCode=false&allowPublicKeyRetrieval=true + - DATABASE_USERNAME=root + - DATABASE_PASSWORD=1936 + # Aqui iria la creacion de un super usuario base + networks: + - weather-network + + + depends_on: + - weather-database + weather-database: + image: mysql:latest + ports: + - "3307:3306" + environment: + MYSQL_ROOT_PASSWORD: 1936 + MYSQL_DATABASE: pb + networks: + - weather-network diff --git a/pom.xml b/pom.xml index abd3cb2..4351ae8 100644 --- a/pom.xml +++ b/pom.xml @@ -107,8 +107,25 @@ bucket4j_jdk8-core 8.3.0 - - + + diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..2ae0aff --- /dev/null +++ b/schema.sql @@ -0,0 +1,28 @@ +CREATE TABLE usuario ( + id INT PRIMARY KEY AUTO_INCREMENT, + nombre VARCHAR(255) NOT NULL, + nombre_usuario VARCHAR(255) NOT NULL UNIQUE, + email VARCHAR(255) NOT NULL, + password VARCHAR(255) NOT NULL +); +CREATE TABLE rol ( + id INT PRIMARY KEY AUTO_INCREMENT, + rol_nombre VARCHAR(255) NOT NULL +); +CREATE TABLE usuario_roles ( + usuario_id INT, + rol_id INT, + PRIMARY KEY (usuario_id, rol_id), + FOREIGN KEY (usuario_id) REFERENCES usuario(id), + FOREIGN KEY (rol_id) REFERENCES rol(id) +); +CREATE TABLE consulta ( + id_consulta INT PRIMARY KEY AUTO_INCREMENT, + ciudad VARCHAR(255) NOT NULL, + tipo_consulta VARCHAR(255) NOT NULL, + fecha_hora DATETIME NOT NULL, + respuesta TEXT NOT NULL, + usuario_id INT NOT NULL, + FOREIGN KEY (usuario_id) REFERENCES usuario(id) +); +insert into rol (rol_nombre) value ('CLIENT'); diff --git a/src/main/java/com/example/demo/security/Bucket/LimitInterceptor.java b/src/main/java/com/example/demo/security/Bucket/LimitInterceptor.java index a8de041..afce4a1 100644 --- a/src/main/java/com/example/demo/security/Bucket/LimitInterceptor.java +++ b/src/main/java/com/example/demo/security/Bucket/LimitInterceptor.java @@ -44,7 +44,7 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons private Bucket createNewBucket() { return Bucket4j.builder() - .addLimit(Bandwidth.simple(3, Duration.ofHours(1))) + .addLimit(Bandwidth.simple(10, Duration.ofHours(1))) .build(); } diff --git a/src/main/java/com/example/demo/security/entity/Consulta.java b/src/main/java/com/example/demo/security/entity/Consulta.java index fb16dbe..780f3a1 100644 --- a/src/main/java/com/example/demo/security/entity/Consulta.java +++ b/src/main/java/com/example/demo/security/entity/Consulta.java @@ -50,4 +50,5 @@ public class Consulta implements Serializable { private Usuario usuario; + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9b8a860..a727c08 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,8 @@ -#Conexion a MySQL -spring.datasource.url=jdbc:mysql://localhost:3306/pb?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrival=true&useLegacyDateTimeCode=false + #Conexion a MySQL +spring.datasource.url=jdbc:mysql://weather-database:3306/pb?useSSL=false&serverTimezone=UTC&useLegacyDateTimeCode=false&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=1936 + #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.show-sql = true @@ -20,12 +21,17 @@ jwt.expiration = 20000000 management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always -# Cloud Gateway Spring +#SpringDoc Configuration + +#springdoc.api-docs.path=/api-docs + +#springdoc.api-docs.enabled=true + +#springdoc.swagger-ui.path=/swagger-ui.html + +#springdoc.swagger-ui.enabled=true + +#springdoc.paths-to-exclude=/refresh + + -spring.cloud.gateway.routes[0].id=api_route -spring.cloud.gateway.routes[0].uri=http://localhost:8080 -spring.cloud.gateway.routes[0].predicates[0]=Path=/api/** -spring.cloud.gateway.routes[0].filters[0]=name=RequestRateLimiter -spring.cloud.gateway.routes[0].filters[0].args.redis-rate-limiter.replenishRate=10 -spring.cloud.gateway.routes[0].filters[0].args.redis-rate-limiter.burstCapacity=20 -spring.cloud.gateway.routes[0].filters[0].args.key-resolver=#{@userKeyResolver}