fix: scanner now handles real guarddog v2 JSON format
This commit is contained in:
@@ -18,19 +18,16 @@ async def list_packages(
|
||||
flagged: bool | None = Query(None),
|
||||
session: AsyncSession = Depends(get_session),
|
||||
):
|
||||
subq = (
|
||||
select(
|
||||
Scan.package_name,
|
||||
Scan.package_version,
|
||||
Scan.ecosystem,
|
||||
Scan.repository,
|
||||
func.max(Scan.started_at).label("last_scanned_at"),
|
||||
func.max(Scan.flagged).label("is_flagged"),
|
||||
func.sum(Scan.total_findings).label("total_findings"),
|
||||
func.max(Scan.id).label("latest_scan_id"),
|
||||
)
|
||||
.group_by(Scan.package_name, Scan.package_version)
|
||||
)
|
||||
subq = select(
|
||||
Scan.package_name,
|
||||
Scan.package_version,
|
||||
Scan.ecosystem,
|
||||
Scan.repository,
|
||||
func.max(Scan.started_at).label("last_scanned_at"),
|
||||
func.max(Scan.flagged).label("is_flagged"),
|
||||
func.sum(Scan.total_findings).label("total_findings"),
|
||||
func.max(Scan.id).label("latest_scan_id"),
|
||||
).group_by(Scan.package_name, Scan.package_version)
|
||||
|
||||
if ecosystem:
|
||||
subq = subq.where(Scan.ecosystem == ecosystem)
|
||||
@@ -41,11 +38,10 @@ async def list_packages(
|
||||
total = await session.scalar(total_q)
|
||||
|
||||
rows = (
|
||||
(await session.execute(
|
||||
await session.execute(
|
||||
subq.order_by(func.max(Scan.started_at).desc()).offset(offset).limit(limit)
|
||||
))
|
||||
.all()
|
||||
)
|
||||
)
|
||||
).all()
|
||||
|
||||
return {
|
||||
"total": total,
|
||||
@@ -74,12 +70,16 @@ async def get_package(
|
||||
session: AsyncSession = Depends(get_session),
|
||||
):
|
||||
scans = (
|
||||
await session.execute(
|
||||
select(Scan)
|
||||
.where(Scan.package_name == name, Scan.package_version == version)
|
||||
.order_by(Scan.started_at.desc())
|
||||
(
|
||||
await session.execute(
|
||||
select(Scan)
|
||||
.where(Scan.package_name == name, Scan.package_version == version)
|
||||
.order_by(Scan.started_at.desc())
|
||||
)
|
||||
)
|
||||
).scalars().all()
|
||||
.scalars()
|
||||
.all()
|
||||
)
|
||||
|
||||
if not scans:
|
||||
return {"detail": "Not found"}
|
||||
@@ -87,10 +87,8 @@ async def get_package(
|
||||
all_findings = []
|
||||
for s in scans:
|
||||
findings = (
|
||||
await session.execute(
|
||||
select(Finding).where(Finding.scan_id == s.id)
|
||||
)
|
||||
).scalars().all()
|
||||
(await session.execute(select(Finding).where(Finding.scan_id == s.id))).scalars().all()
|
||||
)
|
||||
all_findings.extend(f.__dict__ for f in findings)
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user