1
1
import { Driver , EagerResult , Integer , Node } from "neo4j-driver"
2
2
import { v4 as uuid } from 'uuid'
3
- import { TypeOf , z , ZodDiscriminatedUnion , ZodObject } from "zod"
4
- import { neo4jAction } from "../clients/neo4j"
3
+ import { AnyZodObject , TypeOf , z , ZodDiscriminatedUnion , ZodObject } from "zod"
4
+ import { neo4jAction , neo4jDriver } from "../clients/neo4j"
5
5
import { AnyNodeTypeMap , GenericNodeType , GenericNodeTypeMap , Neo4jNodeShape , NodeSetChildNodeTypes , NodeSetParentTypes , NodeShape } from "../types/NodeType"
6
6
import { ParentOfNodeSetTypes , SetNodeTypes } from "../types/types"
7
7
import { UixErr , Ok , UixErrSubtype , AnyErrType } from "../types/Result"
@@ -26,9 +26,7 @@ export type GenericCreateNodeAction = Action<
26
26
export const createNodeFactory = <
27
27
NodeTypeMap extends AnyNodeTypeMap ,
28
28
> (
29
- neo4jDriver : Driver ,
30
- openaiClient : OpenAI ,
31
- nodeTypeMap : NodeTypeMap ,
29
+ nodeTypeMap : NodeTypeMap
32
30
) => neo4jAction ( async <
33
31
ParentOfNodeSetType extends ParentOfNodeSetTypes < NodeTypeMap > ,
34
32
SetNodeType extends SetNodeTypes < NodeTypeMap , ParentOfNodeSetType > ,
@@ -47,10 +45,10 @@ export const createNodeFactory = <
47
45
// Check Schema
48
46
const stateSchema = ( < GenericNodeType > nodeTypeMap [ childNodeType ] ! ) [ 'stateSchema' ]
49
47
const newNodeStructure = isZodDiscriminatedUnion ( stateSchema )
50
- ? z . union ( stateSchema . options . map ( ( option : ZodObject < any > ) => option . extend ( {
48
+ ? z . union ( stateSchema . options . map ( ( option : AnyZodObject ) => option . merge ( z . object ( {
51
49
nodeId : z . string ( ) ,
52
50
nodeType : z . string ( )
53
- } ) ) ) . parse ( {
51
+ } ) ) ) as [ AnyZodObject , AnyZodObject , ... AnyZodObject [ ] ] ) . parse ( {
54
52
...initialState ,
55
53
nodeId : providedNodeId ?? uuid ( ) ,
56
54
nodeType : childNodeType
@@ -64,7 +62,7 @@ export const createNodeFactory = <
64
62
nodeType : childNodeType
65
63
} )
66
64
console . log ( "Creating" , parentNodeKeys , childNodeType , newNodeStructure )
67
- const node = await neo4jDriver . executeQuery < EagerResult < {
65
+ const node = await neo4jDriver ( ) . executeQuery < EagerResult < {
68
66
childNode : Node < Integer , NodeShape < NodeTypeMap [ SetNodeType ] > >
69
67
} > > ( /* cypher */ `
70
68
merge (childNode:Node:${ childNodeType } {nodeId: $childNode.nodeId})
@@ -93,6 +91,6 @@ export const createNodeFactory = <
93
91
data : { parentNodeKeys, childNodeType, initialState }
94
92
} ) ;
95
93
// Triggers
96
- await upsertVectorNode ( neo4jDriver , openaiClient , node , nodeTypeMap ) ;
94
+ await upsertVectorNode ( node , nodeTypeMap as GenericNodeTypeMap ) ;
97
95
return Ok ( node )
98
96
} )
0 commit comments