def executeInsertAll(self, InsertAll_): # InsertAll : { # table: "table_name", # values: [ { type: ('Entero' | 'Decimal' | 'Cadena' | 'Variable' | 'Regex' | 'All'), value: "" } ] # #values: [ { type: (1 | 2 | 3 | 4 | 5 | 6 ), value: "" } ] # } insertAll: InsertAll = InsertAll_ table_name = insertAll.table values = insertAll.values check_and_solve_values_ = check_and_solve_values(self, values) if check_and_solve_values_ == None: TypeChecker_Manager_ = get_TypeChecker_Manager() if TypeChecker_Manager_ != None: use_: str = get_use(TypeChecker_Manager_) if use_ != None: database_ = get_database(use_, TypeChecker_Manager_) if database_ != None: table_ = get_table(table_name, database_) if table_ != None: if len(table_.columns) == len(values): check_type_ = check_type(table_.columns, values) if check_type_ == None: check_null_ = check_null( table_.columns, values) if check_null_ == None: check_maxlength_ = check_maxlength( table_.columns, values) if check_maxlength_ == None: check_checks_ = check_checks( table_.columns, values) if check_checks_ == None: try: #success values_list = [] i = 0 while i < len(values): if (values[i] == None): values_list.append( None) else: values_list.append( values[i].value) i += 1 replace_default( values_list, table_.columns) result_insert = insert( database_.name, table_.name, values_list) if result_insert == 0: print_success( "QUERY", "Insert in " + str(table_.name) + " table, done successfully" ) elif result_insert == 1: print_error( "UNKNOWN ERROR", "Operation error") elif result_insert == 2: print_error( "SEMANTIC ERROR", "Database does not exist" ) elif result_insert == 3: print_error( "SEMANTIC ERROR", "Table does not exist") elif result_insert == 4: print_error( "SEMANTIC ERROR", "Duplicate primary key" ) elif result_insert == 5: print_error( "SEMANTIC ERROR", "Columns out of bounds" ) else: print_error( "UNKNOWN ERROR", "Operation error") except Exception as e: print_error( "UNKNOWN ERROR", "instruction not executed") #print(e) else: print_error( "SEMANTIC ERROR", check_checks_) else: print_error("SEMANTIC ERROR", check_maxlength_) else: print_error("SEMANTIC ERROR", check_null_) else: print_error("SEMANTIC ERROR", check_type_) else: print_error( "SEMANTIC ERROR", "Wrong arguments submitted for table. " + str(len(table_.columns)) + " required and " + str(len(values)) + " received") else: print_error("SEMANTIC ERROR", "Table does not exist") else: print_error("SEMANTIC ERROR", "Database to use does not exist") else: print_warning("RUNTIME ERROR", "Undefined database to use") else: print_error("UNKNOWN ERROR", "instruction not executed") else: print_error("SEMANTIC ERROR", check_and_solve_values_)
def executeInsert(self, Insert_): # Insert : { # table: "table_name", # columns: [ "column_name", "column_name" ], # values: [ { type: ('Entero' | 'Decimal' | 'Cadena' | 'Variable' | 'Regex' | 'All'), value: "" } ] # #values: [ { type: (1 | 2 | 3 | 4 | 5 | 6 ), value: "" } ] # } insert: Insert = Insert_ table_name = insert.table columns = insert.columns values = insert.values if len(columns) == len(values): TypeChecker_Manager_ = get_TypeChecker_Manager() if TypeChecker_Manager_ != None: use_: str = get_use(TypeChecker_Manager_) if use_ != None: database_ = get_database(use_, TypeChecker_Manager_) if database_ != None: table_ = get_table(table_name, database_) if table_ != None: if len(table_.columns) >= len(values): table_columns_names = [] i = 0 while i < len(table_.columns): table_columns_names.append( table_.columns[i].name) i += 1 i = 0 columns_exist = True columns_exist_error = 0 while i < len(columns) and columns_exist == True: if not (columns[i] in table_columns_names) == True: columns_exist = False columns_exist_error = 1 i += 1 if columns_exist == True: new_list_of_values = [] i = 0 j = 0 while i < len(table_columns_names): if (table_columns_names[i] in columns) == True: new_list_of_values.append(values[j]) j += 1 else: new_list_of_values.append(None) i += 1 new_InsertAll = InsertAll( table_name, new_list_of_values) executeInsertAll(self, new_InsertAll) else: print_error( "SEMANTIC ERROR", str(columns[columns_exist_error]) + " column in which you want to insert does not exist" ) else: print_error( "SEMANTIC ERROR", "Number of arguments sent is greater than the number of columns in the table" ) else: print_error("SEMANTIC ERROR", "Table does not exist") else: print_error("SEMANTIC ERROR", "Database to use does not exist") else: print_warning("RUNTIME ERROR", "Undefined database to use") else: print_error("UNKNOWN ERROR", "instruction not executed") else: print_error("SEMANTIC ERROR", "number of columns and values are not the same size")