Compare commits
3 Commits
feat_testi
...
feat_domai
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbabd5da3c | ||
|
|
283e9c6b7f | ||
|
|
fcc5d9d7bc |
@@ -1,7 +1,7 @@
|
|||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from urllib.parse import ParseResult
|
from urllib.parse import ParseResult
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select, func
|
||||||
from sqlalchemy.engine import Engine
|
from sqlalchemy.engine import Engine
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from slopserver.models import Domain, Path, User, Report
|
from slopserver.models import Domain, Path, User, Report
|
||||||
@@ -11,6 +11,13 @@ def select_slop(urls: list[ParseResult], engine: Engine) -> Iterable[Domain]:
|
|||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
rows = session.scalars(query).all()
|
rows = session.scalars(query).all()
|
||||||
return rows
|
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):
|
def insert_slop(urls: list[ParseResult], engine: Engine, user: User | None = None):
|
||||||
domain_dict: dict[str. set[str]] = dict()
|
domain_dict: dict[str. set[str]] = dict()
|
||||||
|
|||||||
@@ -7,9 +7,12 @@ import unittest
|
|||||||
class TestDBFuncs(unittest.TestCase):
|
class TestDBFuncs(unittest.TestCase):
|
||||||
|
|
||||||
test_db_url = settings.db_url
|
test_db_url = settings.db_url
|
||||||
engine = None
|
|
||||||
|
|
||||||
def setUp(self):
|
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")
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user