async def get_source_connection(
        self,
        db: AsyncSession,
        source_connection_id: UUID,
        show_auth_fields: bool = False,
        current_user: schemas.User = None,
    ) -> schemas.SourceConnection:
        """Get a source connection with all related data.

        This method enriches the source connection with data from related objects:
        1. Connection information
        2. Integration credential and decrypted auth fields (if exists)
        3. Sync information and latest sync job status (if exists)
        4. Collection information (if exists)

        Args:
            db: The database session
            source_connection_id: The ID of the source connection
            show_auth_fields: Whether to show the auth fields
            current_user: The current user

        Returns:
            The enriched source connection

        Raises:
            HTTPException: If the source connection is not found
        """
        # Get the source connection from database
        source_connection = await crud.source_connection.get(
            db=db, id=source_connection_id, current_user=current_user
        )

        if not source_connection:
            raise HTTPException(status_code=404, detail="Source connection not found")

        # Convert to schema model to start building the response
        source_connection_schema = schemas.SourceConnection.from_orm_with_collection_mapping(
            source_connection
        )

        # 1. Get the connection and its credentials if they exist
        if source_connection.connection_id:
            connection = await crud.connection.get(
                db=db, id=source_connection.connection_id, current_user=current_user
            )

            if connection and connection.integration_credential_id:
                # Get and decrypt the integration credential
                integration_credential = await crud.integration_credential.get(
                    db=db, id=connection.integration_credential_id, current_user=current_user
                )

                if integration_credential and integration_credential.encrypted_credentials:
                    if show_auth_fields:
                        # Decrypt credentials and attach to source connection
                        decrypted_auth_fields = credentials.decrypt(
                            integration_credential.encrypted_credentials
                        )
                        source_connection_schema.auth_fields = decrypted_auth_fields
                    else:
                        source_connection_schema.auth_fields = "********"

        # 2. Get the sync schedule information if sync_id exists
        if source_connection.sync_id:
            sync = await crud.sync.get(
                db=db, id=source_connection.sync_id, current_user=current_user
            )
            if sync:
                # Add cron_schedule and next_scheduled_run to the response
                source_connection_schema.cron_schedule = sync.cron_schedule
                source_connection_schema.next_scheduled_run = sync.next_scheduled_run

                # Log the sync schedule information for debugging
                source_connection_logger.info(
                    f"Adding sync schedule to source connection: "
                    f"cron_schedule={sync.cron_schedule}, "
                    f"next_scheduled_run={sync.next_scheduled_run}"
                )

        # Before returning, add a log to see what's actually being sent
        logger.info(
            "\nRETURNING SOURCE CONNECTION: "
            f"latest_sync_job_id={source_connection_schema.latest_sync_job_id},\n"
            f"cron_schedule={source_connection_schema.cron_schedule},\n"
            f"next_scheduled_run={source_connection_schema.next_scheduled_run},\n"
            "all job info="
            f"{source_connection_schema if 'source_connection_schema' in locals() else 'None'}\n"
        )

        return source_connection_schema
Get a source connection with all related data.

        This method enriches the source connection with data from related objects:
        1. Connection information
        2. Integration credential and decrypted auth fields (if exists)
        3. Sync information and latest sync job status (if exists)
        4. Collection information (if exists)

        Args:
            db: The database session
            source_connection_id: The ID of the source connection
            show_auth_fields: Whether to show the auth fields
            current_user: The current user

        Returns:
            The enriched source connection

        Raises:
            HTTPException: If the source connection is not found
        
backend/airweave/core/source_connection_service.py