Пример #1
0
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_)
Пример #2
0
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")