Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/dev-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ jobs:
with:
fetch-depth: 0
ref: Development
- name: Set up JDK 21
uses: actions/setup-java@v4
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: '21'
distribution: 'temurin'
java-version: '25'
- name: Cache Maven repository
uses: actions/cache@v4
with:
Expand All @@ -38,3 +38,5 @@ jobs:
value: "mongodb://localhost:27017"
- name: Build with Maven
run: mvn -B package --file pom.xml
env:
QUARKUS_LANGCHAIN4J_MISTRALAI_API_KEY: ${{ secrets.QUARKUS_LANGCHAIN4J_MISTRALAI_API_KEY }}
8 changes: 4 additions & 4 deletions .github/workflows/main-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ jobs:
with:
fetch-depth: 0
ref: main
- name: Set up JDK 21
uses: actions/setup-java@v4
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: '21'
distribution: 'temurin'
java-version: '25'
- name: Cache Maven repository
uses: actions/cache@v4
with:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ jobs:
with:
fetch-depth: 0
ref: main
- name: Set up JDK 21
uses: actions/setup-java@v4
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: 'adopt'
java-version: '21'
distribution: 'temurin'
java-version: '25'
- name: Cache Maven repository
uses: actions/cache@v4
with:
Expand Down
59 changes: 52 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
<artifactId>project-services</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<compiler-plugin.version>3.12.1</compiler-plugin.version>
<maven.compiler.release>17</maven.compiler.release>
<compiler-plugin.version>3.14.1</compiler-plugin.version>
<maven.compiler.release>25</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
<quarkus.platform.version>3.9.1</quarkus.platform.version>
<quarkus.platform.version>3.31.4</quarkus.platform.version>
<skipITs>true</skipITs>
<surefire-plugin.version>3.2.5</surefire-plugin.version>
<dontcode-common.version>0.3.1</dontcode-common.version>
<surefire-plugin.version>3.5.4</surefire-plugin.version>
<dontcode-common.version>0.4.1-SNAPSHOT</dontcode-common.version>
</properties>
<dependencyManagement>
<dependencies>
Expand All @@ -26,12 +26,24 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>quarkus-langchain4j-bom</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<artifactId>quarkus-junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit-mockito</artifactId>
<scope>test</scope>
</dependency>
<dependency>
Expand All @@ -47,6 +59,10 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mutiny</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-websockets-next</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mongodb-client</artifactId>
Expand All @@ -59,6 +75,21 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-rest-jackson</artifactId>
</dependency>
<dependency>
<groupId>io.quarkiverse.langchain4j</groupId>
<artifactId>quarkus-langchain4j-mistral-ai</artifactId>
</dependency>
<dependency>
<groupId>net.dontcode.common</groupId>
<artifactId>quarkus-mongo</artifactId>
<version>${dontcode-common.version}</version>
</dependency>
<dependency>
<groupId>net.dontcode.common</groupId>
<artifactId>quarkus-mongo-test</artifactId>
<version>${dontcode-common.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
Expand All @@ -67,6 +98,7 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.platform.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
Expand Down Expand Up @@ -121,8 +153,21 @@
</plugins>
</build>
<properties>
<quarkus.package.type>native</quarkus.package.type>
<quarkus.package.jar.type>native</quarkus.package.jar.type>
</properties>
</profile>
</profiles>
<repositories>
<repository>
<name>Central Portal Snapshots</name>
<id>central-portal-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
45 changes: 45 additions & 0 deletions src/main/java/net/dontcode/prj/GenerateProjectResource.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package net.dontcode.prj;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.quarkus.websockets.next.OnOpen;
import io.quarkus.websockets.next.OnTextMessage;
import io.quarkus.websockets.next.WebSocket;
import jakarta.websocket.EncodeException;
import net.dontcode.common.websocket.MessageEncoderDecoder;
import net.dontcode.core.project.DontCodeProjectModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@WebSocket(path = "/generate")
public class GenerateProjectResource {
private static Logger log = LoggerFactory.getLogger(GenerateProjectResource.class);

private final GenerateProjectService service;

public GenerateProjectResource(GenerateProjectService service) {
this.service = service;
}


@OnOpen
public String onOpen() {
return "Hello, please describe the application you want to generate.";
}

@OnTextMessage()
public String onMessage(String message) {
return projectToString(service.generateProjectJson(message));
}

protected String projectToString (DontCodeProjectModel prj) {
ObjectMapper mapper = new ObjectMapper();
String json = "";
try {
json = mapper.writeValueAsString(prj);
} catch (JsonProcessingException e) {
throw new RuntimeException("Error decoding project", e);
}
return json;
}
}
22 changes: 22 additions & 0 deletions src/main/java/net/dontcode/prj/GenerateProjectService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package net.dontcode.prj;

import dev.langchain4j.service.SystemMessage;
import io.quarkiverse.langchain4j.RegisterAiService;
import jakarta.enterprise.context.SessionScoped;
import net.dontcode.core.project.DontCodeProjectModel;

@RegisterAiService
@SystemMessage("""
Tu es un createur d'application utilisant le framework dont-code. Ce framework génère une application à partir d'un fichier json.
Basé sur la demande d'un utilisateur, tu fournis le fichier json permettant de générer l'application voulue.
Quand tu reçois une demande, trouve les objets qui devront être manipulés. Ces objets doivent être définis dans la liste entities du json.Ensuite, pour chaque objet, cherche les champs nécessaire, et leur type.
Ces champs sont renseignés dans la liste fields de chaque entity.Un champ peut-être d'un des types prédéfinis suivant:
"number","string","date","time","date-time","currency","country","money-amount","eur-amount","usd-amount","image","link","rating","recurring-task","task-complete"
ou du type d'une autre entité.
Optionnellement, un champ peut être une référence vers une autre entité, en ajoutant "reference" a la description avec les informations nécessaire pour faire le lien entre les deux entités.
""")
@SessionScoped
public interface GenerateProjectService {

DontCodeProjectModel generateProjectJson (String msg);
}
29 changes: 29 additions & 0 deletions src/main/java/net/dontcode/prj/PrjTestResource.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package net.dontcode.prj;

import io.quarkus.arc.Arc;
import io.quarkus.arc.ManagedContext;
import io.smallrye.mutiny.Uni;
import jakarta.enterprise.context.SessionScoped;
import jakarta.inject.Inject;
import net.dontcode.core.project.DontCodeProjectModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -15,6 +20,9 @@
public class PrjTestResource {
private static Logger log = LoggerFactory.getLogger(PrjTestResource.class);

// @Inject
// GenerateProjectService generateProjectService;

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response testAsIde(String update) {
Expand Down Expand Up @@ -46,4 +54,25 @@ public Uni<Response> cookie(@CookieParam("Test") String testCookie) {
new NewCookie(new Cookie("Test", Integer.toString(nextValue), "/", "localhost"), null,
60*60, false)).build());
}

/* @GET
@Path("/generator")
@Produces(MediaType.APPLICATION_JSON)
public Uni<Response> generator(@QueryParam("message") String message) {
// We create a session context just to call the session scoped service
ManagedContext sessionContext = null;
try {
sessionContext = Arc.requireContainer().sessionContext();
if (!sessionContext.isActive()) {
sessionContext.activate();
}
DontCodeProjectModel response=generateProjectService.generateProjectJson(message);
return Uni.createFrom().item(Response.ok().entity(response).build());

} finally {
if (sessionContext != null) {
sessionContext.terminate();
}
}
}*/
}
Loading
Loading