Skip to content

Commit bcde2a2

Browse files
Refactored ingestion models by replacing DBNode with CodeModel and DevDocDBNode with DevDocModel, enhancing type safety and code organization. Updated related functions and types across the ingestion process to reflect these changes.
1 parent 0f00a8a commit bcde2a2

File tree

17 files changed

+151
-126
lines changed

17 files changed

+151
-126
lines changed

ingestion/src/lib/api/establish-relations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ export async function establishRelations(relations: DBNodeRelation[]): Promise<b
1616
console.log(e)
1717
return false
1818
}
19-
}
19+
}

ingestion/src/lib/api/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export { purgeDB } from './purge-db'
2-
export { insertBatch } from './insert-batch'
3-
export { establishRelations } from './establish-relations'
1+
export { purgeDB } from "./purge-db"
2+
export { insertBatch } from "./insert-batch"
3+
export { establishRelations } from "./establish-relations"

ingestion/src/lib/api/insert-batch.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ export async function insertBatch(batchID: string, nodes: DBNode[]): Promise<boo
2525
}
2626
}
2727
return false
28-
}
28+
}

ingestion/src/lib/api/purge-db.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ export async function purgeDB(): Promise<boolean> {
1515
console.log(e)
1616
return false
1717
}
18-
}
18+
}

ingestion/src/lib/models/code.ts

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { TreeNode } from "../../process/prepare/processor/core/treeNode"
2+
import { BaseNode, BaseRelation, EmbeddingsContainer, NodeDescriptor } from "./types"
3+
4+
export type CodeModelRelation = BaseRelation
5+
6+
export interface CodeModelProps extends BaseNode, EmbeddingsContainer {
7+
name: string
8+
type: string
9+
code: string
10+
filePath: string
11+
isFile?: boolean
12+
descriptor: NodeDescriptor
13+
}
14+
15+
export class CodeModel implements CodeModelProps {
16+
id: string
17+
name: string
18+
type: string
19+
code: string
20+
filePath: string
21+
relations: CodeModelRelation[]
22+
nameEmbeddings: number[]
23+
codeEmbeddings: number[]
24+
isFile: boolean
25+
descriptor: NodeDescriptor
26+
27+
constructor(props: CodeModelProps) {
28+
this.id = props.id
29+
this.name = props.name
30+
this.type = props.type
31+
this.code = props.code
32+
this.filePath = props.filePath
33+
this.relations = props.relations
34+
this.nameEmbeddings = props.nameEmbeddings || []
35+
this.codeEmbeddings = props.codeEmbeddings || []
36+
this.isFile = props.isFile || false
37+
this.descriptor = props.descriptor
38+
}
39+
40+
static fromTreeNode(node: TreeNode): CodeModel {
41+
return new CodeModel({
42+
id: node.getID(),
43+
name: node.name,
44+
type: node.type,
45+
code: node.body,
46+
filePath: node.sourceFileRelativePath,
47+
relations: node.uses.map((use) => ({
48+
target: use.name,
49+
relation: "USES",
50+
})),
51+
nameEmbeddings: [],
52+
codeEmbeddings: [],
53+
isFile: false,
54+
descriptor: "Node",
55+
})
56+
}
57+
58+
getNodeName(): string {
59+
return this.name
60+
}
61+
}

ingestion/src/lib/models/db-node.ts

Lines changed: 0 additions & 76 deletions
This file was deleted.

ingestion/src/lib/models/dev-doc-db-node.ts

Lines changed: 0 additions & 16 deletions
This file was deleted.

ingestion/src/lib/models/devdoc.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { BaseNode, BaseRelation, EmbeddingsContainer } from "./types"
2+
3+
export type DevDocModelRelation = BaseRelation
4+
5+
export interface DevDocModelProps extends BaseNode, EmbeddingsContainer {
6+
url: string
7+
element: string
8+
content: string
9+
}
10+
11+
export class DevDocModel implements DevDocModelProps {
12+
id: string
13+
relations: DevDocModelRelation[]
14+
nameEmbeddings: number[]
15+
codeEmbeddings: number[]
16+
contentEmbeddings: number[]
17+
18+
url: string
19+
element: string
20+
content: string
21+
22+
constructor(props: DevDocModelProps) {
23+
this.id = props.id
24+
this.relations = props.relations
25+
this.nameEmbeddings = props.nameEmbeddings || []
26+
this.codeEmbeddings = props.codeEmbeddings || []
27+
this.contentEmbeddings = props.contentEmbeddings || []
28+
this.url = props.url
29+
this.element = props.element
30+
this.content = props.content
31+
}
32+
}

ingestion/src/lib/models/types.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
export type BaseRelationType = "CONTAINS" | "USES"
2+
3+
export interface BaseRelation {
4+
target: string
5+
relation: BaseRelationType
6+
}
7+
8+
export interface BaseNode {
9+
id: string
10+
relations: BaseRelation[]
11+
}
12+
13+
export interface EmbeddingsContainer {
14+
nameEmbeddings?: number[]
15+
codeEmbeddings?: number[]
16+
contentEmbeddings?: number[]
17+
}
18+
19+
export type NodeDescriptor = "Node" | "Documentation" | "Code"

ingestion/src/lib/styleguides.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { writeFileSync } from "fs"
2-
import { DBNode } from "./models/db-node"
2+
import { CodeModel } from "./models/code"
33
import { db } from "./neo4j"
44
import { Styleguides } from "./styleguides.types"
55

@@ -54,7 +54,7 @@ export async function insertStyleguides() {
5454

5555
const jobs = []
5656
for (const [filePath, data] of Object.entries(styleguides)) {
57-
const node = new DBNode({
57+
const node = new CodeModel({
5858
id: filePath,
5959
name: filePath,
6060
type: "",

0 commit comments

Comments
 (0)