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"
def alterDatabaseRename(databaseOld, databaseNew): Databases = File.importFile() for data in Databases: if data["name"] == databaseOld: data["name"] = databaseNew File.exportFile(Databases) return return
def createDatabase(name, mode, owner): database = {} database["name"] = name database["mode"] = mode database["owner"] = owner database["tables"] = [] Databases = File.importFile() Databases.append(database) File.exportFile(Databases)
def alterTable(dbName, tableOld, tableNew): Databases = File.importFile() for db in Databases: if db["name"] == dbName: for table in db["tables"]: if table["name"] == tableOld: table["name"] = tableNew File.exportFile(Databases) break break
def alterDatabaseOwner(database, ownerNew): Databases = File.importFile() if ownerNew == "CURRENT_USER" or ownerNew == "SESSION_USER": ownerNew = "root" for data in Databases: if data["name"] == database: data["owner"] = ownerNew File.exportFile(Databases) return 0 return 1
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
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
def createTable(dbName, tableName, inherits): table = {} table["name"] = tableName table["inherits"] = inherits table["columns"] = [] Databases = File.importFile() for db in Databases: if db["name"] == dbName: db["tables"].append(table) break File.exportFile(Databases)
def insertColumns(dbName, tName, columns): Databases = File.importFile() 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)
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
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
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
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
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
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"
def load(): global Databases global Types Databases = File.importFile("Databases") Types = File.importFile("Types")
def existIndex(self, name): Index = File.importFile("Index") exists = Index.get(name) if exists != None: return True return False