Skip to content

Commit 16d65dd

Browse files
Merge pull request #104 from Imovato/feature/correcao-url-imagens
Feature/correcao url imagens
2 parents f0bb072 + 53c330e commit 16d65dd

44 files changed

Lines changed: 1143 additions & 253 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cadastral/Dockerfile

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,31 @@
1-
#FROM openjdk:17-alpine
2-
#MAINTAINER com.mateusbalda
3-
#VOLUME /tmp
4-
#EXPOSE 8081
5-
#
6-
#COPY CrudService/target/*.jar /crud-service.jar
7-
#
8-
#ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker-demo", "/crud-service.jar"]
9-
10-
## In this way the file, creates the image along with maven
11-
FROM maven:3.6-openjdk-17-slim AS MAVEN_BUILD
12-
COPY CrudService/pom.xml /build/
13-
COPY CrudService/src /build/src/
14-
WORKDIR /build/
15-
RUN mvn package -DskipTests
16-
17-
FROM openjdk:17-alpine
18-
MAINTAINER com.mateusbalda
19-
EXPOSE 8081
20-
COPY --from=MAVEN_BUILD /build/target/*.jar imobiliaria.jar
21-
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker-demo","/imobiliaria.jar"]
1+
# ---------- stage 1: build ----------
2+
FROM maven:3.9.6-eclipse-temurin-21 AS build
3+
4+
WORKDIR /app
5+
6+
# Copiar apenas o pom para aproveitar o cache do Maven
7+
COPY pom.xml .
8+
RUN mvn -q -DskipTests dependency:go-offline
9+
10+
# Copiar código restante
11+
COPY . .
12+
13+
# Gerar o JAR (sem testes para agilizar)
14+
RUN mvn -q clean package -DskipTests
15+
16+
17+
# ---------- stage 2: runtime ----------
18+
FROM eclipse-temurin:21-jre AS runtime
19+
20+
WORKDIR /app
21+
22+
# Copia o JAR final
23+
COPY --from=build /app/target/*.jar app.jar
24+
25+
# Heroku usa PORT, mas exponho 8080 por consistência
26+
EXPOSE 8080
27+
28+
# Importante: garantir que a aplicação leia PORT corretamente
29+
ENV SERVER_PORT=${PORT}
30+
31+
CMD ["sh", "-c", "java -Dserver.port=$PORT -jar app.jar"]

cadastral/pom.xml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,10 @@
102102
<artifactId>dotenv-java</artifactId>
103103
<version>3.0.0</version>
104104
</dependency>
105-
<dependency>
106-
<groupId>org.springframework.cloud</groupId>
107-
<artifactId>spring-cloud-starter-config</artifactId>
108-
</dependency>
105+
<!-- <dependency>-->
106+
<!-- <groupId>org.springframework.cloud</groupId>-->
107+
<!-- <artifactId>spring-cloud-starter-config</artifactId>-->
108+
<!-- </dependency>-->
109109

110110
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
111111
<dependency>
@@ -126,6 +126,13 @@
126126
<version>1.5.5.Final</version>
127127
</dependency>
128128

129+
<dependency>
130+
<groupId>com.cloudinary</groupId>
131+
<artifactId>cloudinary-http44</artifactId>
132+
<version>1.29.0</version>
133+
</dependency>
134+
135+
129136

130137
</dependencies>
131138
<dependencyManagement>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.unipampa.crud.config;
2+
3+
import com.cloudinary.Cloudinary;
4+
import org.springframework.beans.factory.annotation.Value;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
8+
@Configuration
9+
public class CloudinaryConfig {
10+
11+
@Value("${CLOUDINARY_URL}")
12+
private String cloudinaryUrl;
13+
14+
@Bean
15+
public Cloudinary cloudinary() {
16+
return new Cloudinary(cloudinaryUrl);
17+
}
18+
}

cadastral/src/main/java/com/unipampa/crud/config/MongoScriptInitializer.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.unipampa.crud.enums.UserType;
55
import io.github.cdimascio.dotenv.Dotenv;
66
import org.bson.Document;
7+
import org.springframework.beans.factory.annotation.Value;
78
import org.springframework.boot.CommandLineRunner;
89
import org.springframework.context.annotation.Configuration;
910
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -16,6 +17,8 @@ public class MongoScriptInitializer implements CommandLineRunner {
1617

1718
private final PasswordEncoder passwordEncoder;
1819
private final Dotenv dotenv = Dotenv.load();
20+
@Value("${spring.data.mongodb.uri}")
21+
private String mongoUri;
1922

2023
public MongoScriptInitializer(PasswordEncoder passwordEncoder) {
2124
this.passwordEncoder = passwordEncoder;
@@ -26,8 +29,8 @@ public MongoScriptInitializer(PasswordEncoder passwordEncoder) {
2629
public void run(String... args) throws Exception {
2730
System.out.println("Verificando se os dados já existem no banco...");
2831

29-
try (var client = MongoClients.create("mongodb://localhost:27017")) {
30-
var database = client.getDatabase("cadastral");
32+
try (var client = MongoClients.create(mongoUri)) {
33+
var database = client.getDatabase("imovato");
3134
var roleCollection = database.getCollection("role");
3235
var userCollection = database.getCollection("user");
3336

@@ -62,26 +65,31 @@ public void run(String... args) throws Exception {
6265

6366
userCollection.insertMany(List.of(
6467
new Document("_id", "admin-1")
65-
.append("userName", dotenv.get("ADMIN1_USERNAME"))
66-
.append("password", passwordEncoder.encode(dotenv.get("ADMIN1_PASSWORD")))
68+
.append("userName", System.getenv("ADMIN1_USERNAME"))
69+
.append("password", passwordEncoder.encode(System.getenv("ADMIN1_PASSWORD")))
70+
.append("email", System.getenv("ADMIN1_EMAIL"))
6771
.append("roles", List.of(roleAdmin)),
6872

6973
new Document("_id", "admin-2")
70-
.append("userName", dotenv.get("ADMIN2_USERNAME"))
71-
.append("password", passwordEncoder.encode(dotenv.get("ADMIN2_PASSWORD")))
74+
.append("userName", System.getenv("ADMIN2_USERNAME"))
75+
.append("password", passwordEncoder.encode(System.getenv("ADMIN2_PASSWORD")))
76+
.append("email", System.getenv("ADMIN2_EMAIL"))
7277
.append("roles", List.of(roleAdmin)),
7378

7479
new Document("_id", "admin-3")
75-
.append("userName", dotenv.get("ADMIN3_USERNAME"))
76-
.append("password", passwordEncoder.encode(dotenv.get("ADMIN3_PASSWORD")))
80+
.append("userName", System.getenv("ADMIN3_USERNAME"))
81+
.append("password", passwordEncoder.encode(System.getenv("ADMIN3_PASSWORD")))
82+
.append("email", System.getenv("ADMIN3_EMAIL"))
7783
.append("roles", List.of(roleAdmin)),
7884

7985
new Document("_id", "admin-4")
80-
.append("userName", dotenv.get("ADMIN4_USERNAME"))
81-
.append("password", passwordEncoder.encode(dotenv.get("ADMIN4_PASSWORD")))
86+
.append("userName", System.getenv("ADMIN4_USERNAME"))
87+
.append("password", passwordEncoder.encode(System.getenv("ADMIN4_PASSWORD")))
88+
.append("email", System.getenv("ADMIN4_EMAIL"))
8289
.append("roles", List.of(roleAdmin))
8390
));
8491

92+
8593
System.out.println("Usuários criados com sucesso!");
8694
} else {
8795
System.out.println("Usuários já existem no banco. Inicialização de usuários não necessária.");

cadastral/src/main/java/com/unipampa/crud/config/security/UserDetailsServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public class UserDetailsServiceImpl implements UserDetailsService {
1919
@Override
2020
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
2121
try {
22-
var user = userRepository.findByUserName(username);
22+
// O parâmetro 'username' agora contém o email
23+
var user = userRepository.findUserByEmail(username);
2324
var opt = user.orElseThrow(() -> new UsernameNotFoundException(USER_NOT_FOUND + username));
2425
return UserDatailsImpl.build(opt);
2526
} catch (Exception e) {

cadastral/src/main/java/com/unipampa/crud/dto/AccommodationDTO.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@
99
import java.util.List;
1010

1111
public record AccommodationDTO(
12-
@Schema(example = "6804eaef24e9aa24141421a1")
13-
String id,
14-
1512
@NotBlank
16-
@Schema(example = "Apartamento moderno no centro")
13+
@Schema(example = "Apartamento moderno no centro 2")
1714
String title,
1815

1916
@Schema(example = "Centro Histórico")
@@ -27,7 +24,7 @@ public record AccommodationDTO(
2724
String city,
2825

2926
@NotBlank
30-
@Schema(example = "Apartamento bem iluminado, com 2 quartos e cozinha equipada.")
27+
@Schema(example = "Apartamento bem iluminado, com 3 quartos e cozinha equipada.")
3128
String description,
3229

3330
@Schema(example = "Rua dos Andradas")
@@ -56,6 +53,22 @@ public record AccommodationDTO(
5653
@Schema(example = "4")
5754
Integer maxOccupancy,
5855

59-
@Schema(example = "[\"https://img.com/1.jpg\", \"https://img.com/2.jpg\"]")
56+
@NotNull
57+
@Schema(example = "2")
58+
Integer roomCount,
59+
60+
@NotNull
61+
@Schema(example = "1")
62+
Integer bathroomCount,
63+
64+
@NotNull
65+
@Schema(example = "true")
66+
Boolean allowsPets,
67+
68+
@NotNull
69+
@Schema(example = "true")
70+
Boolean isSharedHosting,
71+
72+
@Schema(example = "[]")
6073
List<String> imagesUrls
6174
) {}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.unipampa.crud.dto;
2+
3+
import com.unipampa.crud.enums.AccommodationType;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import java.math.BigDecimal;
6+
7+
public record AccommodationFilterDTO(
8+
@Schema(example = "Porto Alegre", description = "Cidade da acomodação")
9+
String city,
10+
11+
@Schema(example = "RS", description = "Estado/UF da acomodação")
12+
String state,
13+
14+
@Schema(example = "Centro Histórico", description = "Bairro da acomodação")
15+
String neighborhood,
16+
17+
@Schema(example = "500.00", description = "Preço mínimo da acomodação")
18+
BigDecimal priceMin,
19+
20+
@Schema(example = "5000.00", description = "Preço máximo da acomodação")
21+
BigDecimal priceMax,
22+
23+
@Schema(example = "APARTMENT", description = "Tipo de acomodação")
24+
AccommodationType accommodationType,
25+
26+
@Schema(example = "4", description = "Ocupância máxima mínima")
27+
Integer maxOccupancyMin,
28+
29+
@Schema(example = "true", description = "Permite animais de estimação")
30+
Boolean allowsPets,
31+
32+
@Schema(example = "true", description = "Permite crianças")
33+
Boolean allowsChildren,
34+
35+
@Schema(example = "true", description = "É um alojamento compartilhado")
36+
Boolean isSharedHosting
37+
) {}
38+

cadastral/src/main/java/com/unipampa/crud/dto/AccommodationRequestDTO.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.unipampa.crud.dto;
22

3+
import com.fasterxml.jackson.annotation.JsonProperty;
34
import com.unipampa.crud.enums.AccommodationType;
45
import io.swagger.v3.oas.annotations.media.Schema;
56
import jakarta.validation.constraints.NotBlank;
@@ -10,7 +11,7 @@
1011

1112
public record AccommodationRequestDTO(
1213
@NotBlank
13-
@Schema(example = "Apartamento moderno no centro")
14+
@Schema(example = "Apartamento moderno no centro 2")
1415
String title,
1516

1617
@Schema(example = "Centro Histórico")
@@ -24,7 +25,7 @@ public record AccommodationRequestDTO(
2425
String city,
2526

2627
@NotBlank
27-
@Schema(example = "Apartamento bem iluminado, com 2 quartos e cozinha equipada.")
28+
@Schema(example = "Apartamento bem iluminado, com 3 quartos e cozinha equipada.")
2829
String description,
2930

3031
@Schema(example = "Rua dos Andradas")
@@ -46,16 +47,31 @@ public record AccommodationRequestDTO(
4647
Integer imageQuantity,
4748

4849
@NotNull
50+
@JsonProperty("accommodationType")
4951
@Schema(example = "APARTMENT")
5052
AccommodationType accommodationType,
5153

5254
@NotNull
5355
@Schema(example = "4")
5456
Integer maxOccupancy,
5557

56-
@Schema(example = "[\"https://img.com/1.jpg\", \"https://img.com/2.jpg\"]")
57-
List<String> imagesUrls,
58+
@NotNull
59+
@Schema(example = "2")
60+
Integer roomCount,
61+
62+
@NotNull
63+
@Schema(example = "1")
64+
Integer bathroomCount,
65+
66+
@NotNull
67+
@Schema(example = "true")
68+
Boolean allowsPets,
69+
70+
@NotNull
71+
@Schema(example = "true")
72+
Boolean isSharedHosting,
73+
74+
@Schema(example = "[]")
75+
List<String> imagesUrls
5876

59-
@NotBlank
60-
String hostId
6177
) {}

cadastral/src/main/java/com/unipampa/crud/dto/LoginDTO.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
public record LoginDTO(
66

7-
@NotBlank
87
String username,
98

9+
@NotBlank
10+
String email,
11+
1012
@NotBlank
1113
String password
1214

cadastral/src/main/java/com/unipampa/crud/dto/UserDTO.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
import jakarta.validation.constraints.NotBlank;
66

77
public record UserDTO(
8-
@NotBlank String email,
9-
@NotBlank String name,
10-
@NotBlank String userName,
11-
@NotBlank String cpf,
12-
@NotBlank String phone,
13-
@NotBlank String address,
14-
@NotBlank String password,
15-
@NotBlank String role,
16-
@NotBlank UserType type
17-
) {}
8+
@NotBlank String email,
9+
@NotBlank String name,
10+
@NotBlank String userName,
11+
@NotBlank String cpf,
12+
@NotBlank String password,
13+
@NotBlank String role,
14+
@NotBlank UserType type,
15+
String phone,
16+
String address
17+
) {
18+
}

0 commit comments

Comments
 (0)