Compare commits

...

7 Commits

Author SHA1 Message Date
Carlos Henrique
a86b3117cc Versao do java alterada.
All checks were successful
Build e Deploy / build-and-deploy (push) Successful in 10m28s
2026-02-28 12:30:39 -03:00
Carlos Henrique
990739f93c Corrigido a imagem de build.
All checks were successful
Build e Deploy / build-and-deploy (push) Successful in 9m45s
2026-02-27 19:59:03 -03:00
Carlos Henrique
5730e46312 Corrigido a imagem de build.
Some checks failed
Build e Deploy / build-and-deploy (push) Failing after 4m42s
2026-02-27 18:54:54 -03:00
Carlos Henrique
7b237221a3 Mudado a imagem de build do workflow.
Some checks failed
Build e Deploy / build-and-deploy (push) Failing after 1m15s
2026-02-27 18:51:16 -03:00
Carlos Henrique
5ed8494db7 Merge branch 'develop'
Some checks failed
Build e Deploy / build-and-deploy (push) Has been cancelled
2026-02-27 18:46:30 -03:00
Carlos Henrique
6a46a1a379 Feito para pegar mais retornos da api do coolify. 2026-02-27 18:45:51 -03:00
Carlos Henrique
ec342f77a6 Feito endpoin de busca e salvar. 2026-02-26 05:16:34 -03:00
17 changed files with 389 additions and 344 deletions

View File

@@ -17,20 +17,21 @@ jobs:
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven' # Esta linha ativa o cache automático das dependências do Maven
cache: 'maven'
- name: Corrigir Instalador e Instalar Maven
- name: Instalar Maven Direto (Garantido e Rápido)
run: |
sudo dpkg --configure -a
sudo apt-get update
sudo apt-get install -y maven
# Baixa o binário oficial e extrai na pasta /tmp em 2 segundos
curl -sL https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz | tar -xz -C /tmp
# Adiciona o Maven ao PATH do runner para os próximos passos
echo "/tmp/apache-maven-3.9.6/bin" >> $GITHUB_PATH
- name: Build do JAR (Sem Testes)
run: |
# O -DskipTests ignora os testes e foca só em gerar o arquivo
# Agora o comando 'mvn' vai funcionar perfeitamente e muito rápido
mvn clean install -DskipTests
- name: Chamar Webhook do Coolify
run: |
curl -X GET "https://coolify.stackpanel.com.br/api/v1/deploy?uuid=iwwcg08c04css0o444k08sgg&force=false" \
-H "Authorization: Bearer 6|JDmqzDFYjZbHKGEt3jjMERvvMTKNsDjsugQQkZtg28e56c42"
-H "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}"

View File

@@ -10,7 +10,7 @@
</parent>
<groupId>br.com.stackpanel</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.0.0</version>
<name>api</name>
<description>Demo project for Spring Boot</description>
<url/>
@@ -27,7 +27,7 @@
<url/>
</scm>
<properties>
<java.version>21</java.version>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>

View File

@@ -1,9 +1,11 @@
package br.com.stackpanel.api.controller;
import br.com.stackpanel.api.entity.CoolifyPersistence;
import br.com.stackpanel.api.entity.dto.CoolifyResponse;
import br.com.stackpanel.api.entity.dto.CoolifyResponseProjects;
import br.com.stackpanel.api.service.CoolifyService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -21,8 +23,8 @@ public class CoolifyController {
}
@GetMapping("/buscar")
public List<CoolifyResponse> buscarProjects(){
return coolifyService.buscarProjects();
public ResponseEntity<List<CoolifyPersistence>> buscarProjects(){
return ResponseEntity.ok(coolifyService.buscarProjects());
}
@GetMapping("/buscarProject")

View File

@@ -14,8 +14,8 @@ public class CoolifyPersistence {
@Column(name = "NAMPRT")
private String nameProject;
@Column(name = "UUID")
private String uudi;
@Column(name = "UUID", unique = true)
private String uuid;
@Column(name = "DSCPRT")
private String description;
@@ -23,10 +23,9 @@ public class CoolifyPersistence {
public CoolifyPersistence() {
}
public CoolifyPersistence(Long sequence, String nameProject, String uudi, String description) {
this.sequence = sequence;
public CoolifyPersistence(String nameProject, String uuid, String description) {
this.nameProject = nameProject;
this.uudi = uudi;
this.uuid = uuid;
this.description = description;
}
@@ -46,12 +45,12 @@ public class CoolifyPersistence {
this.nameProject = nameProject;
}
public String getUudi() {
return uudi;
public String getUuid() {
return uuid;
}
public void setUudi(String uudi) {
this.uudi = uudi;
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getDescription() {
@@ -61,4 +60,14 @@ public class CoolifyPersistence {
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "CoolifyPersistence{" +
"sequence=" + sequence +
", nameProject='" + nameProject + '\'' +
", uuid='" + uuid + '\'' +
", description='" + description + '\'' +
'}';
}
}

View File

@@ -0,0 +1,4 @@
package br.com.stackpanel.api.entity.dto;
public record ApplicationResponse(String name, String uuid) {
}

View File

@@ -5,5 +5,5 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
public record CoolifyResponseProjects(List<MysqlResponse> mysqls, List<ServiceResponse> services) {
public record CoolifyResponseProjects(List<MysqlResponse> mysqls, List<ServiceResponse> services, List<ApplicationResponse> applications, List<PostgreResponse> postgresqls) {
}

View File

@@ -0,0 +1,4 @@
package br.com.stackpanel.api.entity.dto;
public record PostgreResponse(String name, String uuid, String image) {
}

View File

@@ -16,7 +16,6 @@ public class CoolifyMapper {
}
return new CoolifyPersistence(
response.id(),
response.name(),
response.uuid(),
response.description()

View File

@@ -5,10 +5,15 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CoolifyRepository extends JpaRepository<CoolifyPersistence, Long> {
@Query(value = "SELECT col FROM CoolifyPersistence col WHERE col.uudi in (:uuid)")
CoolifyPersistence buscarProjectsUUIDs(String uuid);
@Query(value = "SELECT col.uuid FROM CoolifyPersistence col")
List<String> buscarListaUuids();
@Query(value = "SELECT col FROM CoolifyPersistence col")
List<CoolifyPersistence> buscarProjects();
}

View File

@@ -1,5 +1,6 @@
package br.com.stackpanel.api.service;
import br.com.stackpanel.api.entity.CoolifyPersistence;
import br.com.stackpanel.api.entity.dto.CoolifyResponse;
import br.com.stackpanel.api.entity.dto.CoolifyResponseProjects;
@@ -7,7 +8,7 @@ import java.util.List;
public interface CoolifyService {
List<CoolifyResponse> buscarProjects();
List<CoolifyPersistence> buscarProjects();
CoolifyResponseProjects buscarProjetosUuid(String uuid);

View File

@@ -1,19 +1,18 @@
package br.com.stackpanel.api.service.impl;
import br.com.stackpanel.api.entity.CoolifyPersistence;
import br.com.stackpanel.api.entity.dto.CoolifyResponse;
import br.com.stackpanel.api.entity.dto.CoolifyResponseProjects;
import br.com.stackpanel.api.entity.dto.MysqlResponse;
import br.com.stackpanel.api.entity.dto.ServiceResponse;
import br.com.stackpanel.api.entity.dto.*;
import br.com.stackpanel.api.entity.mapper.CoolifyMapper;
import br.com.stackpanel.api.integration.CoolifyClient;
import br.com.stackpanel.api.repository.CoolifyRepository;
import br.com.stackpanel.api.service.CoolifyService;
import jakarta.transaction.Transactional;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collector;
import java.util.stream.Collectors;
@@ -30,22 +29,35 @@ public class CoolifyServiceImpl implements CoolifyService {
this.mapper = mapper;
}
public List<CoolifyResponse> buscarProjects(){
return coolifyClient.buscarProjects();
@Override
@Transactional
public List<CoolifyPersistence> buscarProjects(){
List<CoolifyResponse> projects = coolifyClient.buscarProjects();
List<String> dbProjects = repository.buscarListaUuids();
if (!projects.isEmpty()) {
projects.stream()
.filter(item -> !dbProjects.contains(item.uuid()))
.map(mapper::toDomain)
.map(this::salvarProjects)
.forEach(System.out::println);
}
// public List<CoolifyPersistence> salvarProjetos(){
// List<CoolifyResponse> response = coolifyClient.buscarProjects();
//
// List<String> uuids = new ArrayList<>();
//
// for (CoolifyResponse unique: response) {
// uuids.add(unique.uuid());
// }
//
// return uuids;
//
// }
return repository.buscarProjects().stream()
.toList();
}
private CoolifyPersistence salvarProjects(CoolifyPersistence coolifyPersistence){
return repository.save(coolifyPersistence);
}
@Override
public CoolifyResponseProjects buscarProjetosUuid(String uuid){
@@ -67,7 +79,15 @@ public class CoolifyServiceImpl implements CoolifyService {
.flatMap(flat -> flat.services().stream())
.toList();
return new CoolifyResponseProjects(listaDeMysqls, listaDeServices);
List<ApplicationResponse> listaDeApplications = buscarPorUuids.stream()
.flatMap(item -> item.applications().stream())
.toList();
List<PostgreResponse> listaDePostgreSql = buscarPorUuids.stream()
.flatMap(item -> item.postgresqls().stream())
.toList();
return new CoolifyResponseProjects(listaDeMysqls, listaDeServices, listaDeApplications, listaDePostgreSql);
}
}

View File

@@ -3,7 +3,7 @@ spring.config.activate.on-profile=local
spring.datasource.password=SnLcLToyTLVlTmODy9X8WkJLxD5M6i7rFJEQPUgnrIqwH9zYpkX7rczfH8wcPSD1
spring.datasource.username=nexus
spring.datasource.url=jdbc:postgresql://129.153.206.118:5676/nexusdb
spring.datasource.url=jdbc:postgresql://db.stackpanel.com.br/nexusdb
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update