Skip to content

Commit 40c52c9

Browse files
authored
Merge pull request #47 from ClassConnect-org/admin-refactor
filter per email admins
2 parents dc98691 + f8c71e8 commit 40c52c9

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

src/app/controller/admin_controller.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,9 +274,10 @@ def get_admins(
274274
request: Request,
275275
skip: int = Query(0, ge=0, description="Number of records to skip"),
276276
limit: int = Query(10, ge=1, le=100, description="Max records to return"),
277+
email: str = Query(None, description="Filter admins by email"),
277278
):
278279
"""
279280
Retrieve all admins from the database. Requires admin session.
280281
"""
281282
service.get_current_session_admin(request)
282-
return service.get_admins(skip=skip, limit=limit)
283+
return service.get_admins(skip=skip, limit=limit, email=email)

src/app/service/admin_service.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
from app.db.db import db
1313
from app.models.admin import AdminCreate, AdminLogin
14-
from app.schemas.admins import admins_entity
1514

1615
logger = logging.getLogger(__name__)
1716

@@ -94,10 +93,16 @@ def get_current_session_admin(self, request: Request):
9493

9594
return session["email"]
9695

97-
def get_admins(self, skip: int = 0, limit: int = 10):
98-
admins = admins_entity(self.admins_collection.find().skip(skip).limit(limit))
99-
logger.info(f"[SUCCESSFUL] GET: get_admins.\n\tFetched {len(admins)} admins.")
100-
total = self.admins_collection.count_documents({})
96+
def get_admins(self, skip=0, limit=10, email=None):
97+
query = {}
98+
if email:
99+
query["email"] = {"$regex": email, "$options": "i"} # busqueda no-exacta
100+
admins_cursor = self.admins_collection.find(query).skip(skip).limit(limit)
101+
admins = []
102+
for admin in admins_cursor:
103+
admin["_id"] = str(admin["_id"]) # <- conversión
104+
admins.append(admin)
105+
total = self.admins_collection.count_documents(query)
101106
return {"total": total, "admins": admins}
102107

103108
@staticmethod

0 commit comments

Comments
 (0)