Beispiel #1
0
def alterDatabaseRename(databaseOld, databaseNew):
    for data in Databases:
        if data["name"] == databaseOld:
            data["name"] = databaseNew
            File.exportFile(Databases, "Databases")
            return
    return
Beispiel #2
0
def renameColumn(table, name, newName):
    for col in table["columns"]:
        if col["name"] == name:
            col["name"] = newName
            File.exportFile(Databases, "Databases")
            return
    Error.append("No se encontro la colunma")
Beispiel #3
0
def alterColumnsTable(dbName, tName, params):
    table = extractTable(dbName, tName)
    if table == 1 or table == 0:
        return ListError()
    nInit = len(table["columns"])
    for p in params:
        if p[0] == "ADD":
            p.remove("ADD")
            nCol = insertColumns(dbName, table, p)
            if nCol - nInit == 1:
                jsonMode.alterAddColumn(dbName, tName, None)
                nInit += 1
        elif p[0] == "RENAME":

            renameColumn(table, p[1][0], p[1][1])
        elif p[0] == "DROP":
            if p[1][0] == "COLUMN":
                alterDrop(table, p[1][1])
            else:
                dropConstraint(table, p[1][1])
                File.exportFile(Databases, "Databases")
        else:
            type_ = p[1][0]
            col = p[1][1]
            value = p[1][2]
            if type_ == "SET":
                setColumn(table, col, value)
            else:
                alterType(table, col, value)
    return ListError()
Beispiel #4
0
    def execute(self, environment):
        name = self.idIndex
        if self.existIndex(name):
            return "Error: ya existe un index con el nombre " + name

        try:
            Index = File.importFile("Index")
            indexBody = {}
            indexBody["Table"] = self.idTable
            indexBody["Unique"] = self.unique
            indexBody["Method"] = self.usingMethod
            indexBody["Columns"] = []
            for c in self.optList:
                col = {}
                col["Name"] = c[0]
                col["Order"] = c[1]
                if c[2]:
                    nulls = c[2][0]
                    if c[2][1]:
                        nulls += " " + c[2][1]
                else:
                    if col["Order"] == "DESC":
                        nulls = "NULLS FIRST"
                    else:
                        nulls = "NULLS LAST"

                col["Nulls"] = nulls
                indexBody["Columns"].append(col)

            Index[name] = indexBody
            File.exportFile(Index, "Index")
            return "Index " + name + " creado"
        except:
            return "Error fatal"
Beispiel #5
0
def createDatabase(name, mode, owner):
    database = {}
    database["name"] = name
    database["mode"] = mode
    database["owner"] = owner
    database["tables"] = []
    Databases.append(database)
    File.exportFile(Databases, "Databases")
Beispiel #6
0
def alterDatabaseRename(databaseOld, databaseNew):
    Databases = File.importFile()
    for data in Databases:
        if data["name"] == databaseOld:
            data["name"] = databaseNew
            File.exportFile(Databases)
            return
    return
Beispiel #7
0
def alterTable(dbName, tableOld, tableNew):
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableOld:
                    table["name"] = tableNew
                    File.exportFile(Databases, "Databases")
                    break
            break
Beispiel #8
0
def insertColumns(dbName, table, columns):
    for column in columns:
        if column[0]:
            constraint(table, column, dbName)
        else:
            table["columns"].append(getCol(column))

    File.exportFile(Databases, "Databases")

    return len(table["columns"])
Beispiel #9
0
def alterDatabaseOwner(database, ownerNew):
    if ownerNew == "CURRENT_USER" or ownerNew == "SESSION_USER":
        ownerNew = "root"

    for data in Databases:
        if data["name"] == database:
            data["owner"] = ownerNew
            File.exportFile(Databases, "Databases")
            return 0
    return 1
Beispiel #10
0
def createType(exist, name, list_):
    if existType(name):
        if exist:
            return "Type no insertado"
        else:
            return "Error: ya existe un type con el nombre " + name

    Types[name] = list_
    File.exportFile(Types, "Types")
    return None
Beispiel #11
0
    def execute(self, environment):
        Index = File.importFile("Index")
        exists = Index.get(self.name)
        result = []
        if not exists:
            if self.exists:
                result.append("El INDEX : " + self.name + " no existe")
            else:
                result.append("Error: El INDEX : " + self.name + " no existe")
            return result

        if not self.id:
            exists = Index.get(self.newName)
            if not exists:
                Index[self.newName] = Index.pop(self.name)
                result.append("Se cambio el nombre del INDEX : " + self.name +
                              " a " + self.newName)
            else:
                result.append("Error: El INDEX : " + self.newName +
                              " ya existe")
        else:
            column = self.newName
            index = Index[self.name]
            for c in index["Columns"]:
                if c["Name"] == column:
                    if type(self.id) == int:
                        table = index["Table"]
                        columns = Struct.extractColumns(
                            instruction.dbtemp, table)
                        if columns:
                            if self.id > len(columns):
                                result.append("Error fatal: INDEX " +
                                              self.name +
                                              "numero de columna invalido")
                            else:
                                col = columns[self.id - 1].name
                                c["Name"] = col
                                result.append("INDEX : " + self.name +
                                              " cambio la columna " + column +
                                              " por " + col)
                        else:
                            result.append("Error fatal: INDEX " + self.name)
                    else:
                        c["Name"] = self.id
                        result.append("INDEX : " + self.name +
                                      " cambio la columna " + column +
                                      " por " + self.id)

                    Index[self.name] = index
                    break
        if result == []:
            result.append("Error fatal: INDEX " + self.name +
                          " columna invalida : " + self.newName)
        File.exportFile(Index, "Index")
        return result
Beispiel #12
0
def dropDatabase(name):
    element = {}
    for data in Databases:
        if data["name"] == name:
            element = data
            break
    if element != {}:
        Databases.remove(element)
        File.exportFile(Databases, "Databases")
        return "Drop database"
    return "Database not found"
Beispiel #13
0
def dropTable(dbName, tableName):
    tbl = {}
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableName:
                    tbl = table
            if tbl != {}:
                db["tables"].remove(tbl)
                File.exportFile(Databases, "Databases")
        break
Beispiel #14
0
def createTable(dbName, tableName, inherits):
    table = {}
    table["name"] = tableName
    table["inherits"] = inherits
    table["columns"] = []

    for db in Databases:
        if db["name"] == dbName:
            db["tables"].append(table)
            break
    File.exportFile(Databases, "Databases")
Beispiel #15
0
def insertColumns(dbName, tName, columns):
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tName:
                    for column in columns:
                        if column[0]:
                            table = constraint(table, column, dbName)
                        else:
                            table["columns"].append(getCol(column))
                    break
    File.exportFile(Databases, "Databases")
Beispiel #16
0
def alterDrop(table, colName):
    clm = {}
    for col in table["columns"]:
        if col["name"] == colName:
            clm = col
            break

    if clm != {}:
        table["columns"].remove(clm)
        File.exportFile(Databases, "Databases")
        return

    Error.append("No se encontró la columna")
Beispiel #17
0
def dropTable(dbName, tableName):
    tbl = {}
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableName:
                    tbl = table
            if tbl != {}:
                db["tables"].remove(tbl)
                File.exportFile(Databases)
                # print("Drop Table")
        break
Beispiel #18
0
def alterDrop(dbName, tableName, colName):
    clm = {}
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableName:
                    for col in table["columns"]:
                        if col["name"] == colName:
                            clm = col
                    if clm != {}:
                        table["columns"].remove(clm)
                        File.exportFile(Databases, "Databases")
                    return
Beispiel #19
0
def dropDatabase(name):
    element = {}
    Databases = File.importFile()
    for data in Databases:
        if data["name"] == name:
            element = data
            break

    if element != {}:
        Databases.remove(element)
        # print("Drop database")
        File.exportFile(Databases)
        return
    # print("Database not found")
    return
Beispiel #20
0
def setColumn(table, name, value):
    type_ = value[0]
    value = value[1]
    for column in table["columns"]:

        if column["name"] == name:
            if type_ == "NULL":
                column["NN"] = value
            if type_ == "DEFAULT":
                column["Default"] = [value.value, value.type.value]
            else:
                Error.append("Set desconocido")
            break

    File.exportFile(Databases, "Databases")
Beispiel #21
0
    def execute(self, environment):
        Index = File.importFile("Index")
        result = []
        for name in self.names:
            exists = Index.get(name)
            if not exists:
                if self.exists:
                    result.append("El INDEX : " + name + " no existe")
                else:
                    result.append("Error: El INDEX : " + name + " no existe")
            else:
                Index.pop(name)
                result.append("INDEX : " + name + " eliminado")

        File.exportFile(Index, "Index")
        return result
Beispiel #22
0
def alterType(table, name, value):
    for column in table["columns"]:
        if column["name"] == name:
            if column["type"] == "TEXT":
                Error.append("No se puede modificar el type")
            else:
                if column["size"] == None or value[1][0] == None:
                    Error.append("No se puede modificar el type")
                else:
                    if value[1][0] < column["size"]:
                        Error.append("No se puede modificar el type")
                    else:
                        column["size"] = value[1][0]
                        column["type"] = value[0]
            break

    File.exportFile(Databases, "Databases")
Beispiel #23
0
def createTable(dbName, tableName, inherits):
    table = {}
    table["name"] = tableName
    table["inherits"] = inherits

    columns = getInherits(dbName, inherits)
    if columns == 0 or columns == 1:
        return

    table["columns"] = columns

    for db in Databases:
        if db["name"] == dbName:
            db["tables"].append(table)
            break

    File.exportFile(Databases, "Databases")
Beispiel #24
0
def extractColmn(dbName, tableName, colName):
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableName:
                    for col in table["columns"]:
                        if col["name"] == colName:
                            return col
                    return None
Beispiel #25
0
def indexReport():
    index = File.importFile("Index")
    enc = [["Nombre", "Tabla", "Unico", "Metodo", "Columnas"]]
    filas = []
    for (name, Index) in index.items():
        columns = ""
        for column in Index["Columns"]:
            columns += ", " + column["Name"]
        filas.append(
            [name, Index["Table"], Index["Unique"], Index["Method"], columns[1:]]
        )
    enc.append(filas)
    return enc
Beispiel #26
0
    def execute(self, environment):
        Struct.load()
        name = self.idIndex
        if self.existIndex(name):
            return "Error: ya existe un index con el nombre " + name
        table = Struct.extractTable(instruction.dbtemp, self.idTable)
        if table == 1 or table == 0:
            return ("Error: no existe la tabla " + self.idTable +
                    " en la base de datos " + instruction.dbtemp)
        try:
            Index = File.importFile("Index")
            indexBody = {}
            indexBody["Table"] = self.idTable
            indexBody["Unique"] = self.unique
            indexBody["Method"] = self.usingMethod
            indexBody["Columns"] = []
            for c in self.optList:
                col = {}
                col["Name"] = c[0]
                col["Order"] = c[1]
                if c[2]:
                    nulls = c[2][0]
                    if c[2][1]:
                        nulls += " " + c[2][1]
                else:
                    if col["Order"] == "DESC":
                        nulls = "NULLS FIRST"
                    else:
                        nulls = "NULLS LAST"

                col["Nulls"] = nulls
                indexBody["Columns"].append(col)

            Index[name] = indexBody
            File.exportFile(Index, "Index")
            return "Index " + name + " creado"
        except:
            return "Error fatal"
Beispiel #27
0
def alterDrop(dbName, tableName, colName):
    clm = {}
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableName:
                    for col in table["columns"]:
                        if col["name"] == colName:
                            clm = col
                    if clm != {}:
                        table["columns"].remove(clm)
                    # print("Drop Table")
                    return
Beispiel #28
0
def load():
    global Databases
    global Types
    Databases = File.importFile("Databases")
    Types = File.importFile("Types")
Beispiel #29
0
 def existIndex(self, name):
     Index = File.importFile("Index")
     exists = Index.get(name)
     if exists != None:
         return True
     return False
Beispiel #30
0
def save():
    File.exportFile(Databases, "Databases")