"""Project.""" from switchboard_consumer.formatters.errors import format_graphql_errors from switchboard_consumer.formatters.project import format_result_id from switchboard_consumer.logic.validation.project import validate_project_data from switchboard_consumer.utils.message import create_processing_result def create_project(logger, message, data, orchard_client): """Create a project.""" logger.info('Inserting a new project.') result = orchard_client.create_project(data, message.correlation_id) if result.get('errors'): errors = result.get('errors') logger.warning('Problem inserting project - {}'.format(errors)) return create_processing_result( message.ids, message, errors=format_graphql_errors(errors) ) insert_id = result['projectId'] logger.info('Project inserted with id: {}'.format(insert_id)) result_ids = format_result_id(insert_id) return create_processing_result( message.ids + result_ids, message, ) def update_project(logger, message, data, orchard_client): """Update a project.""" logger.info('Updating project.') result = orchard_client.update_project(data, message.correlation_id) if result.get('errors'): errors = result.get('errors') logger.warning('Problem updating project with id: {} - {}'.format( data.get('projectId'), errors )) return create_processing_result( message.ids, message, errors=format_graphql_errors(errors), ) update_id = result['projectId'] logger.info( 'Successfully updated project with id: {}.'.format(update_id)) result_ids = format_result_id(update_id) return create_processing_result( [message.sending_system_local_id] + result_ids, message ) def validate_project(message, data): """Validate Project.""" messages = [] validation_errors = validate_project_data(data) if validation_errors: processing_result = create_processing_result( message.ids, message, errors=validation_errors ) messages.append(processing_result) return messages