44
44
import java .time .Instant ;
45
45
import java .util .List ;
46
46
import lombok .extern .slf4j .Slf4j ;
47
+ import org .jdbi .v3 .core .Handle ;
47
48
import org .jdbi .v3 .core .Jdbi ;
48
49
import org .jdbi .v3 .core .mapper .reflect .ConstructorMapper ;
49
50
import org .jdbi .v3 .core .statement .Query ;
@@ -59,26 +60,26 @@ public RagDataSourceRepository(Jdbi jdbi) {
59
60
}
60
61
61
62
public Long createRagDataSource (RagDataSource input ) {
63
+ return jdbi .inTransaction (handle -> createRagDataSource (handle , input ));
64
+ }
65
+
66
+ public Long createRagDataSource (Handle handle , RagDataSource input ) {
62
67
RagDataSource cleanedInputs = cleanInputs (input );
63
- return jdbi .inTransaction (
64
- handle -> {
65
- var sql =
66
- """
67
- INSERT INTO rag_data_source (name, chunk_size, chunk_overlap_percent, created_by_id, updated_by_id, connection_type, embedding_model, summarization_model)
68
- VALUES (:name, :chunkSize, :chunkOverlapPercent, :createdById, :updatedById, :connectionType, :embeddingModel, :summarizationModel)
69
- """ ;
70
- Long result ;
71
- try (var update = handle .createUpdate (sql )) {
72
- update .bindMethods (cleanedInputs );
73
- result = update .executeAndReturnGeneratedKeys ("id" ).mapTo (Long .class ).one ();
74
- }
75
- if (Boolean .TRUE .equals (input .availableForDefaultProject ())) {
76
- handle .execute (
77
- "INSERT INTO project_data_source (data_source_id, project_id) VALUES (?, 1)" ,
78
- result );
79
- }
80
- return result ;
81
- });
68
+ var sql =
69
+ """
70
+ INSERT INTO rag_data_source (name, chunk_size, chunk_overlap_percent, created_by_id, updated_by_id, connection_type, embedding_model, summarization_model, ASSOCIATED_SESSION_ID)
71
+ VALUES (:name, :chunkSize, :chunkOverlapPercent, :createdById, :updatedById, :connectionType, :embeddingModel, :summarizationModel, :associatedSessionId)
72
+ """ ;
73
+ Long result ;
74
+ try (var update = handle .createUpdate (sql )) {
75
+ update .bindMethods (cleanedInputs );
76
+ result = update .executeAndReturnGeneratedKeys ("id" ).mapTo (Long .class ).one ();
77
+ }
78
+ if (input .availableForDefaultProject ()) {
79
+ handle .execute (
80
+ "INSERT INTO project_data_source (data_source_id, project_id) VALUES (?, 1)" , result );
81
+ }
82
+ return result ;
82
83
}
83
84
84
85
private static RagDataSource cleanInputs (RagDataSource input ) {
@@ -94,10 +95,10 @@ public void updateRagDataSource(RagDataSource input) {
94
95
handle -> {
95
96
var sql =
96
97
"""
97
- UPDATE rag_data_source
98
- SET name = :name, connection_type = :connectionType, updated_by_id = :updatedById, summarization_model = :summarizationModel, time_updated = :now
99
- WHERE id = :id AND deleted IS NULL
100
- """ ;
98
+ UPDATE rag_data_source
99
+ SET name = :name, connection_type = :connectionType, updated_by_id = :updatedById, summarization_model = :summarizationModel, time_updated = :now
100
+ WHERE id = :id AND deleted IS NULL
101
+ """ ;
101
102
try (var update = handle .createUpdate (sql )) {
102
103
update
103
104
.bind ("name" , cleanedInputs .name ())
@@ -111,7 +112,7 @@ public void updateRagDataSource(RagDataSource input) {
111
112
handle .execute (
112
113
"DELETE FROM project_data_source WHERE data_source_id = ? AND project_id = 1" ,
113
114
input .id ());
114
- if (Boolean . TRUE . equals ( input .availableForDefaultProject () )) {
115
+ if (input .availableForDefaultProject ()) {
115
116
handle .execute (
116
117
"INSERT INTO project_data_source (data_source_id, project_id) VALUES (?, 1)" ,
117
118
input .id ());
@@ -124,18 +125,18 @@ public RagDataSource getRagDataSourceById(Long id) {
124
125
handle -> {
125
126
var sql =
126
127
"""
127
- SELECT rds.*, count(rdsd.ID) as document_count, sum(rdsd.SIZE_IN_BYTES) as total_doc_size,
128
- EXISTS(
129
- SELECT 1 from project_data_source pds
130
- WHERE pds.data_source_id = rds.id
131
- AND pds.project_id = 1
132
- ) as available_for_default_project
133
- FROM rag_data_source rds
134
- LEFT JOIN RAG_DATA_SOURCE_DOCUMENT rdsd ON rds.id = rdsd.data_source_id
135
- WHERE rds.deleted IS NULL
136
- AND rds.id = :id
137
- GROUP BY rds.ID
138
- """ ;
128
+ SELECT rds.*, count(rdsd.ID) as document_count, sum(rdsd.SIZE_IN_BYTES) as total_doc_size,
129
+ EXISTS(
130
+ SELECT 1 from project_data_source pds
131
+ WHERE pds.data_source_id = rds.id
132
+ AND pds.project_id = 1
133
+ ) as available_for_default_project
134
+ FROM rag_data_source rds
135
+ LEFT JOIN RAG_DATA_SOURCE_DOCUMENT rdsd ON rds.id = rdsd.data_source_id
136
+ WHERE rds.deleted IS NULL
137
+ AND rds.id = :id
138
+ GROUP BY rds.ID
139
+ """ ;
139
140
handle .registerRowMapper (ConstructorMapper .factory (RagDataSource .class ));
140
141
try (Query query = handle .createQuery (sql )) {
141
142
query .bind ("id" , id );
@@ -153,17 +154,18 @@ public List<RagDataSource> getRagDataSources() {
153
154
handle -> {
154
155
var sql =
155
156
"""
156
- SELECT rds.*, count(rdsd.ID) as document_count, sum(rdsd.SIZE_IN_BYTES) as total_doc_size,
157
- EXISTS(
158
- SELECT 1 from project_data_source pds
159
- WHERE pds.data_source_id = rds.id
160
- AND pds.project_id = 1
161
- ) as available_for_default_project
162
- FROM rag_data_source rds
163
- LEFT JOIN RAG_DATA_SOURCE_DOCUMENT rdsd ON rds.id = rdsd.data_source_id
164
- WHERE rds.deleted IS NULL
165
- GROUP BY rds.ID
166
- """ ;
157
+ SELECT rds.*, count(rdsd.ID) as document_count, sum(rdsd.SIZE_IN_BYTES) as total_doc_size,
158
+ EXISTS(
159
+ SELECT 1 from project_data_source pds
160
+ WHERE pds.data_source_id = rds.id
161
+ AND pds.project_id = 1
162
+ ) as available_for_default_project
163
+ FROM rag_data_source rds
164
+ LEFT JOIN RAG_DATA_SOURCE_DOCUMENT rdsd ON rds.id = rdsd.data_source_id
165
+ WHERE rds.deleted IS NULL
166
+ AND rds.ASSOCIATED_SESSION_ID IS NULL
167
+ GROUP BY rds.ID
168
+ """ ;
167
169
handle .registerRowMapper (ConstructorMapper .factory (RagDataSource .class ));
168
170
try (Query query = handle .createQuery (sql )) {
169
171
return query .mapTo (RagDataSource .class ).list ();
@@ -172,18 +174,21 @@ public List<RagDataSource> getRagDataSources() {
172
174
}
173
175
174
176
public void deleteDataSource (Long id ) {
175
- jdbi .useTransaction (
176
- handle -> {
177
- handle .execute ("UPDATE RAG_DATA_SOURCE SET DELETED = ? where ID = ?" , true , id );
178
- handle .execute ("DELETE FROM PROJECT_DATA_SOURCE WHERE DATA_SOURCE_ID = ?" , id );
179
- handle .execute ("DELETE FROM CHAT_SESSION_DATA_SOURCE WHERE DATA_SOURCE_ID = ?" , id );
180
- });
177
+ jdbi .useTransaction (handle -> deleteDataSource (handle , id ));
178
+ }
179
+
180
+ public void deleteDataSource (Handle handle , Long id ) {
181
+ handle .execute ("UPDATE RAG_DATA_SOURCE SET DELETED = ? where ID = ?" , true , id );
182
+ handle .execute ("DELETE FROM PROJECT_DATA_SOURCE WHERE DATA_SOURCE_ID = ?" , id );
183
+ handle .execute ("DELETE FROM CHAT_SESSION_DATA_SOURCE WHERE DATA_SOURCE_ID = ?" , id );
181
184
}
182
185
183
186
public int getNumberOfDataSources () {
184
187
return jdbi .withHandle (
185
188
handle -> {
186
- try (var query = handle .createQuery ("SELECT count(*) FROM RAG_DATA_SOURCE" )) {
189
+ try (var query =
190
+ handle .createQuery (
191
+ "SELECT count(*) FROM RAG_DATA_SOURCE where ASSOCIATED_SESSION_ID IS NULL AND DELETED IS NULL" )) {
187
192
return query .mapTo (Integer .class ).one ();
188
193
}
189
194
});
0 commit comments