def create_index_sql(self, db_type, table_name, fields=None, new_fields=None): def new_field_name_by_id(id_value): for f in new_fields: if f['id'] == id_value: return f['field_name'] db_module = db_modules.get_db_module(db_type) index_name = self.f_index_name.value if self.f_foreign_index.value: key = self.f_foreign_field.display_text ref_id = self.task.sys_fields.field_by_id(self.f_foreign_field.value, 'f_object') ref = self.task.sys_items.field_by_id(ref_id, 'f_table_name') sql = db_module.create_foreign_index_sql(table_name, index_name, key, ref) else: index_desc = self.descending.value index_fields = self.f_fields.value desc = '' if index_desc: desc = 'DESC' fields = common.load_index_fields(index_fields) if new_fields: fields = [new_field_name_by_id(field[0]) for field in fields] else: fields = [self.task.sys_fields.field_by_id(field[0], 'f_field_name') for field in fields] if desc and db_type in (db_modules.SQLITE, db_modules.POSTGRESQL): fields = ['"%s" %s' % (field, desc) for field in fields] field_str = ', '.join(fields) else: field_str = '"' + '", "'.join(fields) + '"' sql = db_module.create_index_sql(index_name, table_name, field_str, desc) print db_module.set_case(sql) return db_module.set_case(sql)
def create_index_sql(self, db_type, table_name, fields=None, new_fields=None): def new_field_name_by_id(id_value): for f in new_fields: if f['id'] == id_value: return f['field_name'] db_module = db_modules.get_db_module(db_type) index_name = self.f_index_name.value if self.f_foreign_index.value: fields = self.task.sys_fields.copy() fields.set_where(id=self.f_foreign_field.value) fields.open() key = fields.f_field_name.value ref_id = fields.f_object.value items = self.task.sys_items.copy() items.set_where(id=ref_id) items.open() ref = items.f_table_name.value primary_key = items.f_primary_key.value fields.set_where(id=primary_key) fields.open() primary_key = fields.f_field_name.value sql = db_module.create_foreign_index_sql(table_name, index_name, key, ref, primary_key) else: index_fields = self.f_fields.value desc = '' if self.descending.value: desc = 'DESC' unique = '' if self.f_unique_index.value: unique = 'UNIQUE' fields = common.load_index_fields(index_fields) if new_fields: fields = [new_field_name_by_id(field[0]) for field in fields] else: fields = [ self.task.sys_fields.field_by_id(field[0], 'f_field_name') for field in fields ] if desc and db_type in (db_modules.SQLITE, db_modules.POSTGRESQL): fields = ['"%s" %s' % (field, desc) for field in fields] field_str = ', '.join(fields) else: field_str = '"' + '", "'.join(fields) + '"' sql = db_module.create_index_sql(index_name, table_name, unique, field_str, desc) print sql return sql
def create_index_sql(self, db_type, table_name, fields=None, new_fields=None, foreign_key_dict=None): def new_field_name_by_id(id_value): for f in new_fields: if f['id'] == id_value: return f['field_name'] db_module = db_modules.get_db_module(db_type) index_name = self.f_index_name.value if self.f_foreign_index.value: if foreign_key_dict: key = foreign_key_dict['key'] ref = foreign_key_dict['ref'] primary_key = foreign_key_dict['primary_key'] else: fields = self.task.sys_fields.copy() fields.set_where(id=self.f_foreign_field.value) fields.open() key = fields.f_field_name.value ref_id = fields.f_object.value items = self.task.sys_items.copy() items.set_where(id=ref_id) items.open() ref = items.f_table_name.value primary_key = items.f_primary_key.value fields.set_where(id=primary_key) fields.open() primary_key = fields.f_field_name.value sql = db_module.create_foreign_index_sql(table_name, index_name, key, ref, primary_key) else: index_fields = self.f_fields.value desc = '' if self.descending.value: desc = 'DESC' unique = '' if self.f_unique_index.value: unique = 'UNIQUE' fields = common.load_index_fields(index_fields) if new_fields: fields = [new_field_name_by_id(field[0]) for field in fields] else: fields = [self.task.sys_fields.field_by_id(field[0], 'f_field_name') for field in fields] if desc and db_type in (db_modules.SQLITE, db_modules.POSTGRESQL): fields = ['"%s" %s' % (field, desc) for field in fields] field_str = ', '.join(fields) else: field_str = '"' + '", "'.join(fields) + '"' sql = db_module.create_index_sql(index_name, table_name, unique, field_str, desc) print sql return sql
def create_index_sql(self, db_type, table_name, fields=None, new_fields=None): def new_field_name_by_id(id_value): for f in new_fields: if f['id'] == id_value: return f['field_name'] db_module = db_modules.get_db_module(db_type) index_name = self.f_index_name.value if self.f_foreign_index.value: key = self.f_foreign_field.display_text ref_id = self.task.sys_fields.field_by_id( self.f_foreign_field.value, 'f_object') ref = self.task.sys_items.field_by_id(ref_id, 'f_table_name') sql = db_module.create_foreign_index_sql(table_name, index_name, key, ref) else: index_desc = self.descending.value index_fields = self.f_fields.value desc = '' if index_desc: desc = 'DESC' fields = common.load_index_fields(index_fields) if new_fields: fields = [new_field_name_by_id(field[0]) for field in fields] else: fields = [ self.task.sys_fields.field_by_id(field[0], 'f_field_name') for field in fields ] if desc and db_type in (db_modules.SQLITE, db_modules.POSTGRESQL): fields = ['"%s" %s' % (field, desc) for field in fields] field_str = ', '.join(fields) else: field_str = '"' + '", "'.join(fields) + '"' sql = db_module.create_index_sql(index_name, table_name, field_str, desc) print db_module.set_case(sql) return db_module.set_case(sql)