Add rag-service
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package com.balex.rag.repo;
|
||||
|
||||
import com.balex.rag.model.entity.ChatEntry;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface ChatEntryRepository extends JpaRepository<ChatEntry, Long> {
|
||||
|
||||
List<ChatEntry> findByChatIdOrderByCreatedAtAsc(Long chatId);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.balex.rag.repo;
|
||||
|
||||
import com.balex.rag.model.entity.Chat;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface ChatRepository extends JpaRepository<Chat, Long> {
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.balex.rag.repo;
|
||||
|
||||
import com.balex.rag.model.LoadedDocument;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DocumentRepository extends JpaRepository<LoadedDocument, Long> {
|
||||
|
||||
boolean existsByFilenameAndContentHash(String filename, String contentHash);
|
||||
|
||||
List<LoadedDocument> findByUserId(Integer userId);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.balex.rag.repo;
|
||||
|
||||
import com.balex.rag.model.entity.RefreshToken;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface RefreshTokenRepository extends JpaRepository<RefreshToken, Integer> {
|
||||
|
||||
Optional<RefreshToken> findByToken(String token);
|
||||
|
||||
Optional<RefreshToken> findByUserId(Integer userId);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.balex.rag.repo;
|
||||
|
||||
import com.balex.rag.model.entity.User;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
public interface UserRepository extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> {
|
||||
|
||||
boolean existsByEmail(String email);
|
||||
|
||||
boolean existsByUsername(String username);
|
||||
|
||||
Optional<User> findByIdAndDeletedFalse (Integer id);
|
||||
|
||||
Optional<User> findUserByEmailAndDeletedFalse(String email);
|
||||
|
||||
Optional<User> findByEmail(String email);
|
||||
|
||||
Optional<User> findByUsername(String username);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.balex.rag.repo;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface VectorStoreRepository {
|
||||
|
||||
void deleteBySourceIn(List<String> sources);
|
||||
|
||||
void deleteByUserId(Long userId);
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.balex.rag.repo.impl;
|
||||
|
||||
import com.balex.rag.repo.VectorStoreRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class VectorStoreRepositoryImpl implements VectorStoreRepository {
|
||||
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
|
||||
@Override
|
||||
public void deleteBySourceIn(List<String> sources) {
|
||||
if (sources == null || sources.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String placeholders = String.join(",", sources.stream()
|
||||
.map(s -> "?")
|
||||
.toList());
|
||||
|
||||
String sql = "DELETE FROM vector_store WHERE metadata->>'source' IN (" + placeholders + ")";
|
||||
|
||||
jdbcTemplate.update(sql, sources.toArray());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByUserId(Long userId) {
|
||||
String sql = "DELETE FROM vector_store WHERE (metadata->>'user_id')::bigint = ?";
|
||||
jdbcTemplate.update(sql, userId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user