diff --git a/apps/api/src/db/organizations.py b/apps/api/src/db/organizations.py index 427c57d1..0edf1200 100644 --- a/apps/api/src/db/organizations.py +++ b/apps/api/src/db/organizations.py @@ -20,6 +20,10 @@ class Organization(OrganizationBase, table=True): creation_date: str = "" update_date: str = "" +class OrganizationWithConfig(BaseModel): + org: Organization + config: OrganizationConfig + class OrganizationUpdate(OrganizationBase): pass diff --git a/apps/api/src/routers/orgs.py b/apps/api/src/routers/orgs.py index ad345649..6bb8ed6d 100644 --- a/apps/api/src/routers/orgs.py +++ b/apps/api/src/routers/orgs.py @@ -20,7 +20,6 @@ from src.services.orgs.users import ( from src.db.organization_config import OrganizationConfigBase from src.db.users import PublicUser from src.db.organizations import ( - Organization, OrganizationCreate, OrganizationRead, OrganizationUpdate, @@ -321,7 +320,7 @@ async def api_user_orgs( limit: int, current_user: PublicUser = Depends(get_current_user), db_session: Session = Depends(get_db_session), -) -> List[Organization]: +) -> List[OrganizationRead]: """ Get orgs by page and limit by current user """ diff --git a/apps/api/src/services/orgs/orgs.py b/apps/api/src/services/orgs/orgs.py index abef291b..454ad8bb 100644 --- a/apps/api/src/services/orgs/orgs.py +++ b/apps/api/src/services/orgs/orgs.py @@ -209,6 +209,7 @@ async def create_org( return org + async def create_org_with_config( request: Request, org_object: OrganizationCreate, @@ -338,6 +339,7 @@ async def update_org( return org + async def update_org_with_config_no_auth( request: Request, orgconfig: OrganizationConfigBase, @@ -462,20 +464,43 @@ async def get_orgs_by_user( user_id: str, page: int = 1, limit: int = 10, -) -> list[Organization]: +) -> list[OrganizationRead]: + statement = ( select(Organization) .join(UserOrganization) .where( - Organization.id == UserOrganization.org_id, UserOrganization.user_id == user_id, + UserOrganization.role_id == 1, # Only where the user is admin ) + .offset((page - 1) * limit) + .limit(limit) ) - result = db_session.exec(statement) + # Get organizations where the user is an admin + result = db_session.exec(statement) orgs = result.all() - return orgs #type:ignore + orgsWithConfig = [] + + for org in orgs: + + # Get org config + statement = select(OrganizationConfig).where( + OrganizationConfig.org_id == org.id + ) + result = db_session.exec(statement) + + org_config = result.first() + + config = OrganizationConfig.model_validate(org_config) if org_config else {} + + org = OrganizationRead(**org.model_dump(), config=config) + + orgsWithConfig.append(org) + + return orgsWithConfig + # Config related async def update_org_signup_mechanism(