Compare commits

...
Author SHA1 Message Date
kasun b1a8985b29 added RequiredArgsConstructor annotation 2026-08-11 01:17:40 +02:00
kasun 9073c52b5c refactor: clean up build.gradle 2026-07-21 16:01:12 +02:00
2 changed files with 55 additions and 60 deletions
+53 -56
View File
@@ -1,83 +1,80 @@
val wiremockVersion = "3.12.0"
val postgresqlVersion = "42.7.11"
val springAiVersion by extra("2.0.0")
plugins {
java
jacoco
id("org.springframework.boot") version "4.1.0"
id("io.spring.dependency-management") version "1.1.7"
id("org.sonarqube") version "7.3.0.8198"
java
jacoco
id("org.springframework.boot") version "4.1.0"
id("io.spring.dependency-management") version "1.1.7"
id("org.sonarqube") version "7.3.0.8198"
}
group = "com.vaessl"
version = "0.0.1-SNAPSHOT"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
sonar {
properties {
property("sonar.projectKey", "Vaessl")
property("sonar.projectName", "Vaessl")
property("sonar.coverage.jacoco.xmlReportPaths",
"${layout.buildDirectory.get()}/reports/jacoco/test/jacocoTestReport.xml")
}
properties {
property("sonar.projectKey", "Vaessl")
property("sonar.projectName", "Vaessl")
property("sonar.coverage.jacoco.xmlReportPaths",
"${layout.buildDirectory.get()}/reports/jacoco/test/jacocoTestReport.xml")
}
}
configurations {
compileOnly {
extendsFrom(configurations.annotationProcessor.get())
}
compileOnly {
extendsFrom(configurations.annotationProcessor.get())
}
}
repositories {
mavenCentral()
}
extra["springAiVersion"] = "2.0.0"
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-session-jdbc")
// implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-webmvc")
implementation("org.springframework.ai:spring-ai-starter-model-openai")
implementation("org.postgresql:postgresql:$postgresqlVersion")
implementation("org.springframework.ai:spring-ai-starter-vector-store-pgvector")
compileOnly("org.projectlombok:lombok")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("org.postgresql:postgresql")
annotationProcessor("org.projectlombok:lombok")
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
// testImplementation("org.springframework.boot:spring-boot-starter-security-test")
testImplementation("org.springframework.boot:spring-boot-starter-validation-test")
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
testImplementation("org.wiremock:wiremock-standalone:$wiremockVersion")
testImplementation("org.springframework.boot:spring-boot-starter-session-jdbc-test")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
mavenCentral()
}
dependencyManagement {
imports {
mavenBom("org.springframework.ai:spring-ai-bom:${property("springAiVersion")}")
}
imports {
mavenBom("org.springframework.ai:spring-ai-bom:$springAiVersion")
}
}
dependencies {
// Spring Boot Starters
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-session-jdbc")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-webmvc")
// Spring AI Starters (versions managed by spring-ai-bom)
implementation("org.springframework.ai:spring-ai-starter-model-openai")
implementation("org.springframework.ai:spring-ai-starter-vector-store-pgvector")
// Database
implementation("org.postgresql:postgresql:$postgresqlVersion")
// Tooling & Code Generation
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
developmentOnly("org.springframework.boot:spring-boot-devtools")
// Testing
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
testImplementation("org.springframework.boot:spring-boot-starter-validation-test")
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
testImplementation("org.springframework.boot:spring-boot-starter-session-jdbc-test")
testImplementation("org.wiremock:wiremock-standalone:$wiremockVersion")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
tasks.withType<JavaCompile> {
options.compilerArgs.add("-parameters")
options.compilerArgs.add("-parameters")
}
tasks.withType<Test> {
@@ -97,4 +94,4 @@ tasks.jacocoTestReport {
reports {
xml.required = true
}
}
}
@@ -11,6 +11,7 @@ import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder;
import org.springframework.stereotype.Service;
import com.vaessl.app.shared.ServiceItem;
import com.vaessl.app.shared.ServiceType;
import lombok.RequiredArgsConstructor;
/**
* Embeds {@link ServiceItem}s into the shared vector store and prunes entries that no longer exist
@@ -18,14 +19,11 @@ import com.vaessl.app.shared.ServiceType;
* singleton bean shared across concurrent sync runs; callers own the per-sync ID accumulator.
*/
@Service
@RequiredArgsConstructor
public class EmbeddingService {
private final VectorStore vectorStore;
public EmbeddingService(VectorStore vectorStore) {
this.vectorStore = vectorStore;
}
/**
* Embeds and upserts {@code items} into the vector store, appending each item's ID to
* {@code currentItemIds} so the caller can later prune stale entries via