MATCH (f:Function)WHERE NOT (f)<-[:CALLS]-() AND NOT (f)<-[:HANDLES]-() AND f.name <> 'constructor' AND f.projectId = $projectIdWITH fWHERE NOT f.filePath ENDS WITH '.tsx' AND NOT f.filePath ENDS WITH '.jsx'OPTIONAL MATCH (parent:File)-[:CONTAINS]->(f)WITH f, parentWHERE parent IS NULL OR (NOT parent.path ENDS WITH 'index.ts' AND NOT parent.path ENDS WITH 'index.js')OPTIONAL MATCH (parent)-[:CONTAINS]->(cls:Class)WHERE cls.methods CONTAINS ('"' + f.name + '"')WITH f, clsWHERE cls IS NULLRETURN f.name as name, f.filePath as filePath
MATCH (f:Function)WHERE f.bodyHash IS NOT NULL AND f.projectId = $projectId AND (f.endLine - f.startLine) >= 3WITH f.bodyHash as bodyHash, collect({name: f.name, filePath: f.filePath}) as funcs, count(*) as cntWHERE cnt > 1RETURN bodyHash, cnt as count, funcs as functionsORDER BY cnt DESC
CREATE CONSTRAINT file_id IF NOT EXISTS FOR (f:File) REQUIRE f.id IS UNIQUE;CREATE CONSTRAINT function_id IF NOT EXISTS FOR (f:Function) REQUIRE f.id IS UNIQUE;CREATE CONSTRAINT class_id IF NOT EXISTS FOR (c:Class) REQUIRE c.id IS UNIQUE;CREATE CONSTRAINT route_id IF NOT EXISTS FOR (r:Route) REQUIRE r.id IS UNIQUE;CREATE CONSTRAINT module_id IF NOT EXISTS FOR (m:Module) REQUIRE m.id IS UNIQUE;CREATE CONSTRAINT variable_id IF NOT EXISTS FOR (v:Variable) REQUIRE v.id IS UNIQUE;CREATE CONSTRAINT project_id IF NOT EXISTS FOR (p:Project) REQUIRE p.id IS UNIQUE;
CREATE INDEX file_path IF NOT EXISTS FOR (f:File) ON (f.path);CREATE INDEX function_name IF NOT EXISTS FOR (f:Function) ON (f.name);CREATE INDEX function_filepath IF NOT EXISTS FOR (f:Function) ON (f.filePath);CREATE INDEX class_name IF NOT EXISTS FOR (c:Class) ON (c.name);CREATE INDEX route_path IF NOT EXISTS FOR (r:Route) ON (r.path);
CREATE INDEX file_project IF NOT EXISTS FOR (f:File) ON (f.projectId);CREATE INDEX function_project IF NOT EXISTS FOR (f:Function) ON (f.projectId);CREATE INDEX class_project IF NOT EXISTS FOR (c:Class) ON (c.projectId);CREATE INDEX module_project IF NOT EXISTS FOR (m:Module) ON (m.projectId);CREATE INDEX route_project IF NOT EXISTS FOR (r:Route) ON (r.projectId);CREATE INDEX variable_project IF NOT EXISTS FOR (v:Variable) ON (v.projectId);
All constraints and indexes are auto-initialized on startup via schema/init.ts.