@@ -11,45 +11,20 @@ import {
1111 IApiResponse ,
1212} from "@rocket.chat/apps-engine/definition/api" ;
1313import { DBNode } from "../core/services/db/db" ;
14- import { IDB } from "../core/services/db/db.types " ;
14+ import { DevDocDBNode } from "../core/services/db/devDocDBNode " ;
1515import { Neo4j } from "../core/services/db/neo4j" ;
1616import { MiniLML6 } from "../core/services/embeddings/minilml6" ;
1717import {
1818 IngestEndpointRequestBody ,
1919 IngestEndpointResponseBody ,
2020} from "./ingest.types" ;
2121
22- namespace Helpers {
23- /**
24- * Inserts a node into the database.
25- *
26- * @param {IDB } db - The database instance.
27- * @param {DBNode } node - The node to be inserted.
28- * @returns {Promise<void> } - A promise that resolves when the node is successfully inserted.
29- */
30- async function insertNode ( db : IDB , node : DBNode ) {
31- const query = new DBNode ( node ) . getDBInsertQuery ( ) ;
32- await db . run ( query , node ) ;
33- }
34-
35- /**
36- * Inserts an array of nodes into the database.
37- *
38- * @param {IDB } db - The database object.
39- * @param {DBNode[] } nodes - The array of nodes to be inserted.
40- * @returns {Promise<void> } - A promise that resolves when all nodes have been inserted.
41- */
42- export async function insertNodes ( db : IDB , nodes : DBNode [ ] ) {
43- await Promise . all ( nodes . map ( ( node ) => insertNode ( db , node ) ) ) ;
44- }
45- }
46-
4722export class IngestEndpoint extends ApiEndpoint {
4823 public path = "ingest" ;
4924
5025 /**
5126 * Generates the request and response bodies for the IngestEndpoint.
52- *
27+ *
5328 * @param content - The content to be used for generating the request body.
5429 * @returns An array containing the generated request body and response body.
5530 */
@@ -75,17 +50,21 @@ export class IngestEndpoint extends ApiEndpoint {
7550 ) : Promise < IApiResponse > {
7651 let [ { nodes } , responseBody ] = this . makeBodies ( request . content ) ;
7752
78- // -----------------------------------------------------------------------------------
79- const embeddingModel = new MiniLML6 ( http ) ;
80- nodes = nodes . map ( ( node ) => new DBNode ( node ) ) ;
81- await Promise . all ( nodes . map ( ( x ) => x . fillEmbeddings ( embeddingModel ) ) ) ;
8253 // -----------------------------------------------------------------------------------
8354 const db = new Neo4j ( http ) ;
8455 await db . verifyConnectivity ( ) ;
56+ const embeddingModel = new MiniLML6 ( http ) ;
57+ // -----------------------------------------------------------------------------------
58+ nodes = nodes . map ( ( node ) => {
59+ if ( "element" in node ) {
60+ return new DevDocDBNode ( node ) ;
61+ } else {
62+ return new DBNode ( node ) ;
63+ }
64+ } ) ;
65+ await Promise . all ( nodes . map ( ( x ) => x . fillEmbeddings ( embeddingModel ) ) ) ;
8566 // -----------------------------------------------------------------------------------
86- const jobs = nodes . map ( ( node ) =>
87- db . run ( new DBNode ( node ) . getDBInsertQuery ( ) , node )
88- ) ;
67+ const jobs = nodes . map ( ( node ) => db . run ( node . getDBInsertQuery ( ) , node ) ) ;
8968 await Promise . all ( jobs ) ;
9069 // -----------------------------------------------------------------------------------
9170
0 commit comments