44from .dbs .databases import get_graph_db_session
55
66
7- async def parent_depth (new_req_file_id : str , package_name : str , package_manager : str ) -> int :
8- query = """
9- match (rf:RequirementFile) where elementid(rf) = $new_req_file_id
10- match (p:Package) where p.name = $package_name
11- with shortestPath((rf)-[*..]->(p)) as p
12- return length(p)
13- """
14- session = get_graph_db_session (package_manager )
15- result = await session .run (query , new_req_file_id = new_req_file_id , package_name = package_name )
16- record = await result .single ()
17- return record [0 ] if record else None
18-
19-
20- # async def create_package_and_versions(
21- # package: dict[str, Any],
22- # versions: list[dict[str, Any]],
23- # package_manager: str,
24- # ) -> list[dict[str, str]]:
25- # query_part = f"{{name:$name,{"group_id:$group_id," if package_manager == "MVN" else ""}moment:$moment}}"
26- # query = f"""
27- # create(p:Package{query_part})
28- # with p as package
29- # unwind $versions as version
30- # create(v:Version{{
31- # name: version.name,
32- # release_date: version.release_date,
33- # count: version.count,
34- # cves: version.cves,
35- # mean: version.mean,
36- # weighted_mean: version.weighted_mean
37- # }})
38- # create (package)-[rel_v:Have]->(v)
39- # return collect({{name: v.name, id: elementid(v)}})
40- # """
41- # session = get_graph_db_session(package_manager)
42- # result = await session.run(query, package, versions=versions)
43- # record = await result.single()
44- # return record[0] if record else None
45-
46-
477async def create_package_and_versions_with_parent2 (
488 package : dict [str , Any ],
499 versions : list [dict [str , Any ]],
5010 constraints : list [str ] | str ,
5111 parent_id : str ,
5212 package_manager : str ,
5313) -> list [dict [str , str ]]:
54- query_part1 = f"{{name:$name,{ "group_id:$group_id," if package_manager == "MVN" else "" } moment:$moment}}"
55- query_part2 = f"{{name:$name,{ "group_id:$group_id," if package_manager == "MVN" else "" } moment:$moment}}"
14+ query_part = f"{{name:$name,{ "group_id:$group_id," if package_manager == "MVN" else "" } moment:$moment}}"
5615 query = f"""
5716 match (parent:RequirementFile|Version)
5817 where elementid(parent) = $parent_id
59- create(p:Package{ query_part1 } )
18+ create(p:Package{ query_part } )
6019 create (parent)-[rel_p:Requires{{constraints:$constraints}}]->(p)
6120 with p as package
6221 unwind $versions as version
@@ -85,14 +44,22 @@ async def create_package_and_versions(
8544 package_manager : str ,
8645 constraints : str | None = None ,
8746 parent_id : str | None = None ,
88- parent_version_name : str | None = None
47+ parent_version_name : str | None = None ,
8948) -> list [dict [str , str ]]:
90- query_part1 = ("""
49+ query_part1 = (
50+ """
9151 match (parent:RequirementFile|Version)
9252 where elementid(parent) = $parent_id
93- """ if parent_id else "" )
53+ """
54+ if parent_id
55+ else ""
56+ )
9457 query_part2 = f"{{name:$name,{ "group_id:$group_id," if package_manager == "MVN" else "" } moment:$moment}}"
95- query_part3 = f"create (parent)-[rel_p:Requires{{constraints:$constraints{ ", parent_version_name:$parent_version_name" if parent_version_name else "" } }}]->(p)" if parent_id else ""
58+ query_part3 = (
59+ f"create (parent)-[rel_p:Requires{{constraints:$constraints{ ", parent_version_name:$parent_version_name" if parent_version_name else "" } }}]->(p)"
60+ if parent_id
61+ else ""
62+ )
9663 query = f"""
9764 { query_part1 }
9865 create(p:Package{ query_part2 } )
@@ -112,7 +79,12 @@ async def create_package_and_versions(
11279 """
11380 session = get_graph_db_session (package_manager )
11481 result = await session .run (
115- query , package , constraints = constraints , parent_id = parent_id , parent_version_name = parent_version_name , versions = versions
82+ query ,
83+ package ,
84+ constraints = constraints ,
85+ parent_id = parent_id ,
86+ parent_version_name = parent_version_name ,
87+ versions = versions ,
11688 )
11789 record = await result .single ()
11890 return record [0 ] if record else None
@@ -147,22 +119,6 @@ async def read_packages_by_requirement_file(
147119 return record [0 ] if record else None
148120
149121
150- # TODO: Mejorar esta query
151- # TODO: Probar nueva query transformación a smt
152- # TODO: Probar algoritmo creación en anchura
153-
154- # async def relate_packages2(packages: list[dict(str, str)], package_manager: str) -> None:
155- # query = """
156- # unwind keys($packages) as package
157- # match (p:Package) where p.name = package.package_name
158- # with p, package unwind $packages[package] as parent_id
159- # match (parent:Version) where elementid(parent) = parent_id
160- # create (parent)-[rel:Requires{constraints: package.constraints}]->(p:Package)
161- # """
162- # session = get_graph_db_session(package_manager)
163- # await session.run(query, packages=packages)
164-
165-
166122async def relate_packages (packages : list [dict [str , Any ]], package_manager : str ) -> None :
167123 query = """
168124 unwind $packages as package
0 commit comments