Compare commits
3 Commits
feat_testi
...
feat_domai
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cbabd5da3c | ||
|
|
283e9c6b7f | ||
|
|
fcc5d9d7bc |
@@ -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:
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user