Compare commits

..

2 Commits

12 changed files with 8 additions and 138 deletions

View File

@@ -1,15 +0,0 @@
name: Build e Deploy
on:
push:
branches: [ "main", "master" ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Chamar Webhook do Coolify
run: |
curl -X GET "${{ secrets.DUCK_WEBHOOK }}" \
-H "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}"

13
pom.xml
View File

@@ -10,7 +10,7 @@
</parent> </parent>
<groupId>br.com.stackpanel</groupId> <groupId>br.com.stackpanel</groupId>
<artifactId>duck-api</artifactId> <artifactId>duck-api</artifactId>
<version>0.3.3-BETA</version> <version>0.2.0-BETA</version>
<name/> <name/>
<description/> <description/>
<url/> <url/>
@@ -43,17 +43,6 @@
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp-test</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-data-jpa</artifactId>

View File

@@ -1,23 +0,0 @@
package br.com.stackpanel.duck_api.config;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_CAD;
import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_ERROR;
@Configuration
public class RabbitConfig {
@Bean
public Queue queueNotificationError() {
return new Queue(QUEUE_NOTIFICATION_ERROR.label, true);
}
@Bean
public Queue queueNotificationCad() {
return new Queue(QUEUE_NOTIFICATION_CAD.label, true);
}
}

View File

@@ -35,13 +35,10 @@ public class Product {
@Column(name = "nomplt") @Column(name = "nomplt")
private String nomePlataforma; private String nomePlataforma;
@Column(name = "lnkprd")
private String linkProduto;
public Product() { public Product() {
} }
public Product(Long codigoProduto, String nomeProduto, String descricaoProdutos, BigDecimal precoProdutoAtualizado, BigDecimal precoProdutoPrecoAnterior, LocalDateTime ultimaDataConsultaProduto, LocalDateTime dataEnvioProduto, String nomePlataforma, String linkProduto) { public Product(Long codigoProduto, String nomeProduto, String descricaoProdutos, BigDecimal precoProdutoAtualizado, BigDecimal precoProdutoPrecoAnterior, LocalDateTime ultimaDataConsultaProduto, LocalDateTime dataEnvioProduto, String nomePlataforma) {
this.codigoProduto = codigoProduto; this.codigoProduto = codigoProduto;
this.nomeProduto = nomeProduto; this.nomeProduto = nomeProduto;
this.descricaoProdutos = descricaoProdutos; this.descricaoProdutos = descricaoProdutos;
@@ -50,15 +47,6 @@ public class Product {
this.ultimaDataConsultaProduto = ultimaDataConsultaProduto; this.ultimaDataConsultaProduto = ultimaDataConsultaProduto;
this.dataEnvioProduto = dataEnvioProduto; this.dataEnvioProduto = dataEnvioProduto;
this.nomePlataforma = nomePlataforma; this.nomePlataforma = nomePlataforma;
this.linkProduto = linkProduto;
}
public String getLinkProduto() {
return linkProduto;
}
public void setLinkProduto(String linkProduto) {
this.linkProduto = linkProduto;
} }
public String getDescricaoProdutos() { public String getDescricaoProdutos() {

View File

@@ -26,12 +26,10 @@ public class ProductDTO {
@NotNull @NotNull
private String nomePlataforma; private String nomePlataforma;
private String linkProduto;
public ProductDTO() { public ProductDTO() {
} }
public ProductDTO(Long codigoProduto, String nomeProduto, String descricaoProduto, BigDecimal precoProdutoAtualizado, BigDecimal precoProdutoPrecoAnterior, LocalDateTime ultimaDataConsultaProduto, LocalDateTime dataEnvioProduto, String nomePlataforma, String linkProduto) { public ProductDTO(Long codigoProduto, String nomeProduto, String descricaoProduto, BigDecimal precoProdutoAtualizado, BigDecimal precoProdutoPrecoAnterior, LocalDateTime ultimaDataConsultaProduto, LocalDateTime dataEnvioProduto, String nomePlataforma) {
this.codigoProduto = codigoProduto; this.codigoProduto = codigoProduto;
this.nomeProduto = nomeProduto; this.nomeProduto = nomeProduto;
this.descricaoProduto = descricaoProduto; this.descricaoProduto = descricaoProduto;
@@ -40,15 +38,6 @@ public class ProductDTO {
this.ultimaDataConsultaProduto = ultimaDataConsultaProduto; this.ultimaDataConsultaProduto = ultimaDataConsultaProduto;
this.dataEnvioProduto = dataEnvioProduto; this.dataEnvioProduto = dataEnvioProduto;
this.nomePlataforma = nomePlataforma; this.nomePlataforma = nomePlataforma;
this.linkProduto = linkProduto;
}
public String getLinkProduto() {
return linkProduto;
}
public void setLinkProduto(String linkProduto) {
this.linkProduto = linkProduto;
} }
public String getDescricaoProduto() { public String getDescricaoProduto() {

View File

@@ -1,15 +0,0 @@
package br.com.stackpanel.duck_api.entity.enums;
public enum QueueNames {
QUEUE_NOTIFICATION_ERROR("QUEUE_NOTIFICATION_ERROR"),
QUEUE_NOTIFICATION_CAD("QUEUE_NOTIFICATION_CAD");
public final String label;
private QueueNames(String label) {
this.label = label;
}
}

View File

@@ -21,8 +21,7 @@ public class ProductMapper {
product.getPrecoProdutoPrecoAnterior(), product.getPrecoProdutoPrecoAnterior(),
product.getUltimaDataConsultaProduto(), product.getUltimaDataConsultaProduto(),
product.getDataEnvioProduto(), product.getDataEnvioProduto(),
product.getNomePlataforma(), product.getNomePlataforma()
product.getLinkProduto()
); );
} }
@@ -40,8 +39,7 @@ public class ProductMapper {
dto.getPrecoProdutoPrecoAnterior(), dto.getPrecoProdutoPrecoAnterior(),
dto.getUltimaDataConsultaProduto(), dto.getUltimaDataConsultaProduto(),
dto.getDataEnvioProduto(), dto.getDataEnvioProduto(),
dto.getNomePlataforma(), dto.getNomePlataforma()
dto.getLinkProduto()
); );
} }

View File

@@ -1,7 +0,0 @@
package br.com.stackpanel.duck_api.service;
public interface RabbitPublisherService {
void sendNotificationCad(String notificationCad);
}

View File

@@ -67,6 +67,7 @@ public class ProductServiceImpl implements ProductService {
return productMapper.toProductDTO(produtoExistente); return productMapper.toProductDTO(produtoExistente);
} else if (precoNovo.compareTo(precoAtual) < 0) { } else if (precoNovo.compareTo(precoAtual) < 0) {
// precoNovo < precoAtual → atualiza (ficou mais barato)
log.info("Produto '{}' ID: '{}' teve preco atualizado: {} -> {}", log.info("Produto '{}' ID: '{}' teve preco atualizado: {} -> {}",
dto.getNomeProduto(), produtoExistente.getCodigoProduto(),precoAtual, precoNovo); dto.getNomeProduto(), produtoExistente.getCodigoProduto(),precoAtual, precoNovo);
@@ -77,6 +78,7 @@ public class ProductServiceImpl implements ProductService {
produto = productRepository.save(productMapper.toProductEntity(dto)); produto = productRepository.save(productMapper.toProductEntity(dto));
} else { } else {
// precoNovo > precoAtual → nao atualiza
log.info("Produto '{}' ID: '{}' ja existe com preco menor. Nenhuma alteracao feita.", dto.getNomeProduto(), produtoExistente.getCodigoProduto()); log.info("Produto '{}' ID: '{}' ja existe com preco menor. Nenhuma alteracao feita.", dto.getNomeProduto(), produtoExistente.getCodigoProduto());
return productMapper.toProductDTO(produtoExistente); return productMapper.toProductDTO(produtoExistente);
} }

View File

@@ -1,24 +0,0 @@
package br.com.stackpanel.duck_api.service.impl;
import br.com.stackpanel.duck_api.service.RabbitPublisherService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_ERROR;
public class RabbitPublisherServiceImpl implements RabbitPublisherService {
private static final Logger log = LoggerFactory.getLogger(RabbitPublisherServiceImpl.class);
private final RabbitTemplate rabbitTemplate;
public RabbitPublisherServiceImpl(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
@Override
public void sendNotificationCad(String notificationCad) {
log.info("Sending notification Cad: {}", notificationCad);
rabbitTemplate.convertAndSend(QUEUE_NOTIFICATION_ERROR.label, notificationCad);
}
}

View File

@@ -5,10 +5,4 @@ spring.datasource.password=${db_pass}
spring.datasource.username=${db_user} spring.datasource.username=${db_user}
spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true spring.jpa.show-sql=true
spring.rabbitmq.host=rabbit.stackpanel.com.br
spring.rabbitmq.port=5672
spring.rabbitmq.username=${rabbit_username}
spring.rabbitmq.password=${rabbit_password}

View File

@@ -4,9 +4,3 @@ spring.datasource.url=${db_host:jdbc:postgresql://db.stackpanel.com.br:5432/nexu
spring.datasource.password=${db_pass} spring.datasource.password=${db_pass}
spring.datasource.username=${db_user} spring.datasource.username=${db_user}
spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.driver-class-name=org.postgresql.Driver
spring.rabbitmq.host=rabbit.stackpanel.com.br
spring.rabbitmq.port=5672
spring.rabbitmq.username=${rabbit_username}
spring.rabbitmq.password=${rabbit_password}