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")
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()
def alterDatabaseRename(databaseOld, databaseNew): for data in Databases: if data["name"] == databaseOld: data["name"] = databaseNew File.exportFile(Databases, "Databases") return return
def createDatabase(name, mode, owner): database = {} database["name"] = name database["mode"] = mode database["owner"] = owner database["tables"] = [] Databases.append(database) File.exportFile(Databases, "Databases")
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
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
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"])
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"
def dropTable(dbName, tableName): tbl = {} for db in Databases: if db["name"] == dbName: for table in db["tables"]: if table["name"] == tableName: tbl = table break if tbl != {}: db["tables"].remove(tbl) File.exportFile(Databases, "Databases") break
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")
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")
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")
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")
def save(): File.exportFile(Databases, "Databases")