3 Commits

Author SHA1 Message Date
Jack Case
cbabd5da3c testing top offenders query 2025-11-26 21:43:18 +00:00
Jack Case
283e9c6b7f Merge branch 'feat_testing' into feat_domain_preload 2025-11-26 21:15:53 +00:00
Jack Case
fcc5d9d7bc WIP: wrote a query to get domains ordered by number of reported paths 2025-11-24 18:59:22 +00:00
2 changed files with 14 additions and 4 deletions

View File

@@ -1,7 +1,7 @@
from collections.abc import Iterable
from datetime import datetime
from urllib.parse import ParseResult
from sqlalchemy import select
from sqlalchemy import select, func
from sqlalchemy.engine import Engine
from sqlalchemy.orm import Session
from slopserver.models import Domain, Path, User, Report
@@ -12,6 +12,13 @@ def select_slop(urls: list[ParseResult], engine: Engine) -> Iterable[Domain]:
rows = session.scalars(query).all()
return rows
def top_offenders(engine: Engine, limit: int|None = None) -> Iterable[Domain]:
query = select(Domain.domain_name, func.count(Path.id)).join(Path).group_by(Domain.id).order_by(func.count(Path.id).desc())
if limit: query = query.limit(limit)
with Session(engine) as session:
top_offenders = session.execute(query).all()
return top_offenders
def insert_slop(urls: list[ParseResult], engine: Engine, user: User | None = None):
domain_dict: dict[str. set[str]] = dict()
for url in urls:

View File

@@ -7,9 +7,12 @@ import unittest
class TestDBFuncs(unittest.TestCase):
test_db_url = settings.db_url
engine = None
def setUp(self):
engine = create_engine(self.test_db_url)
self.engine = create_engine(self.test_db_url)
def test_get_top_offenders(self):
items = top_offenders(self.engine)
print(items)
self.assertEqual(items[0][0], "moogle.com")