import argparse import config import connection def add_logs(message, logger): logger.info(message) print(message) def validate_youtube_channel_data(channel_id): sql_youtube_channel = f"""SELECT id, youtube_channel_id FROM youtube_channel WHERE youtube_channel_id = %s;""" select_bindings = (channel_id,) db_connection = connection.ar_db_connection() cursor = db_connection.cursor() cursor.execute(sql_youtube_channel, select_bindings) db_connection.commit() return cursor.fetchone() def check_existing_cms_account_history(channel_id, cms_account_id, logger): sql_select = f"""SELECT ycca.`id`, ycca.`cmsa_display_name`, yc.* FROM youtube_channel yc INNER JOIN youtube_channel_cms_account_history yccah ON yccah.id = yc.youtube_channel_cms_account_history_id INNER JOIN youtube_channel_cms_account ycca ON ycca.id = yccah.youtube_channel_cms_account_id WHERE yc.youtube_channel_id = %s AND ycca.id = %s;""" select_bindings = (channel_id,) + (cms_account_id,) db_connection = connection.ar_db_connection() add_logs('Select query arguments are %s' % str(select_bindings), logger) cursor = db_connection.cursor() cursor.execute(sql_select, select_bindings) db_connection.commit() row_count = cursor.rowcount add_logs('Records fetched for channel_id %s and CMS account %s: %s' % (channel_id, cms_account_id, row_count), logger) return row_count def update_cms_account(channel_id, cms_account_id, logger): insert_sql = f"""INSERT INTO youtube_channel_cms_account_history (youtube_channel_id, youtube_channel_cms_account_id, orchadmin_users_id) VALUES (%s, %s, 179);""" insert_bindings = (channel_id,) + (cms_account_id,) db_connection = connection.ar_db_connection() cursor = db_connection.cursor() cursor.execute(insert_sql, insert_bindings) cms_account_history_id = cursor.lastrowid add_logs('Data inserted into youtube_channel_cms_account_history successfully for channel_id %s and cms account %s.' % ( channel_id, cms_account_id), logger) db_connection.commit() if cms_account_history_id: update_sql = f"""UPDATE youtube_channel SET youtube_channel_cms_account_history_id = %s WHERE id = %s;""" update_bindings = (cms_account_history_id,) + (channel_id,) db_connection = connection.ar_db_connection() cursor = db_connection.cursor() cursor.execute(update_sql, update_bindings) db_connection.commit() add_logs('CMS account %s is updated for channel_id %s.' % ( cms_account_id, channel_id), logger) return True def main(correlation_id=None): logger = config.get_current_logger(correlation_id) logger.info('Running script to update cms account') print('Running script to update cms account') parser = argparse.ArgumentParser() parser.add_argument( 'channel_id', nargs=1, help='Please enter the channel_id' ) parser.add_argument( 'cms_account_id', nargs=1, help='Please select existing Youtube channel CMS account' ) args = parser.parse_args() channel_id = str(args.channel_id[0]) cms_account_id = int(args.cms_account_id[0]) youtube_channel_data = validate_youtube_channel_data(channel_id) if youtube_channel_data is None: add_logs('Given channel id %s is invalid ' % (channel_id,), logger) add_logs('Script executed successfully', logger) return existing_record_count = check_existing_cms_account_history(channel_id, cms_account_id, logger) if existing_record_count != 0: add_logs('CMS Account %s is already assigned to youtube channel id %s' % (channel_id, cms_account_id), logger) add_logs('Script executed successfully', logger) return update_cms_account(youtube_channel_data[0], cms_account_id, logger) add_logs('Youtube channel CMS account is updated successfully to %s for Youtube channel %s .' % (channel_id, cms_account_id), logger) add_logs('Script executed successfully', logger) if __name__ == '__main__': main()