Esempio n. 1
0
	def add_index(self, doctype, fields, index_name=None):
		"""Creates an index with given fields if not already created.
		Index name will be `fieldname1_fieldname2_index`"""
		table_name = get_table_name(doctype)
		index_name = index_name or self.get_index_name(fields)
		fields_str = '", "'.join(re.sub(r"\(.*\)", "", field) for field in fields)

		self.sql_ddl(f'CREATE INDEX IF NOT EXISTS "{index_name}" ON `{table_name}` ("{fields_str}")')
Esempio n. 2
0
    def add_index(self, doctype: str, fields: List, index_name: str = None):
        """Creates an index with given fields if not already created.
		Index name will be `fieldname1_fieldname2_index`"""
        index_name = index_name or self.get_index_name(fields)
        table_name = get_table_name(doctype)
        if not self.has_index(table_name, index_name):
            self.commit()
            self.sql("""ALTER TABLE `%s`
				ADD INDEX `%s`(%s)""" % (table_name, index_name, ", ".join(fields)))
Esempio n. 3
0
    def delete(self,
               doctype: str,
               filters: Union[Dict, List] = None,
               debug=False,
               **kwargs):
        """Delete rows from a table in site which match the passed filters. This
		does trigger DocType hooks. Simply runs a DELETE query in the database.

		Doctype name can be passed directly, it will be pre-pended with `tab`.
		"""
        values = ()
        filters = filters or kwargs.get("conditions")
        table = get_table_name(doctype)
        query = f"DELETE FROM `{table}`"

        if "debug" not in kwargs:
            kwargs["debug"] = debug

        if filters:
            conditions, values = self.build_conditions(filters)
            query = f"{query} WHERE {conditions}"

        return self.sql(query, values, **kwargs)
Esempio n. 4
0
 def change_column_type(self, doctype: str, column: str,
                        type: str) -> Union[List, Tuple]:
     table_name = get_table_name(doctype)
     return self.sql(
         f"ALTER TABLE `{table_name}` MODIFY `{column}` {type} NOT NULL")
Esempio n. 5
0
 def describe(self, doctype: str) -> Union[List, Tuple]:
     table_name = get_table_name(doctype)
     return self.sql(f"DESC `{table_name}`")
Esempio n. 6
0
 def rename_table(self, old_name: str, new_name: str) -> Union[List, Tuple]:
     old_name = get_table_name(old_name)
     new_name = get_table_name(new_name)
     return self.sql(f"RENAME TABLE `{old_name}` TO `{new_name}`")
Esempio n. 7
0
 def change_column_type(self, table: str, column: str,
                        type: str) -> Union[List, Tuple]:
     table_name = get_table_name(table)
     return self.sql(
         f'ALTER TABLE "{table_name}" ALTER COLUMN "{column}" TYPE {type}')
Esempio n. 8
0
 def describe(self, doctype: str) -> Union[List, Tuple]:
     table_name = get_table_name(doctype)
     return self.sql(
         f"SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME = '{table_name}'"
     )
Esempio n. 9
0
 def DocType(table_name: str, *args, **kwargs) -> Table:
     table_name = get_table_name(table_name)
     return Table(table_name, *args, **kwargs)