Untitled
unknown
plain_text
5 months ago
4.3 kB
3
Indexable
from typing import List, Optional from sqlalchemy.orm import Session, joinedload from sqlalchemy import or_ from app.graphql.schema import Info from app.graphql.types.product_type import ProductType, ProductFieldType, StatusType, CountryType, TherapeuticType from app.models import Product, User async def product_data( self, info: Info, user: str = None, page: int = 1, rows: int = 10 ) -> List[ProductType]: session: Session = info.context.session try: # Fetch user details user_obj = session.query(User) if user: user_obj = user_obj.filter_by(login=user).first() if not user_obj: return "User not found" # Get associated countries and therapeutic areas country_ids = [uc.id for uc in user_obj.users_countries] ta_ids = [ut.id for ut in user_obj.users_therapeutics] # Apply filters on Product records products = ( session.query(Product) .filter( Product.is_deleted != 2, # Check if product is not marked as deleted or_( Product.last_active > 0, # Last active condition Product.current_record == 1, # Current record condition Product.is_deleted == 1 # Allow deleted product if marked with 1 ), Product.country_id.in_(country_ids) if country_ids else True, Product.th_area.in_(ta_ids) if ta_ids else True ) .options( joinedload(Product.status), joinedload(Product.country), joinedload(Product.therapeutic), joinedload(Product.product_fields) # Load product_fields relationship ) #.limit(10) .all() ) # Construct product response response = [] for product in products: product_fields = [ ProductFieldType( record_id=pf.record_id, # Corrected to use product_field_id field_id=pf.field_id, max_field_value=pf.field_value, # Set field_value as max_field_value field_detail=FieldDetailType( field_id=pf.field_detail.field_id, field_name=pf.field_detail.field_name ) ) for pf in product.product_fields ] response.append(ProductType( record_id=product.record_id, janssen_mstr_prdct_nm=product.janssen_mstr_prdct_nm, product_phase=product.product_phase, jnj_full_compound_id=product.jnj_full_compound_id, generic_name=product.generic_name, jnj_flag=product.jnj_flag, product_status=product.product_status, current_record=product.current_record, last_active=product.last_active, created_date=product.created_date, updated_date=product.updated_date, status=StatusType( status_id=product.status.id, status_desc=product.status.description ), country=CountryType( country_id=product.country.id, country_name=product.country.name ), therapeutic=TherapeuticType( ta_id=product.therapeutic.id, ta_name=product.therapeutic.name ), product_fields=product_fields # Add product_fields to the response )) return response finally: session.close() For the above code I am passing the payload for resolver as: query { productData(user: "mkr3", page: 1, rows: 10) { id mdmId seriesId countryId productFields { recordId fieldId fieldDetails { id name } } } } But I am getting the response as: { "data": { "productData": [] } } The 'productData' should not be an empty list
Editor is loading...
Leave a Comment