test: add frappe.db.add_index
This commit is contained in:
parent
07c5d0a28c
commit
74d6ed32d6
3 changed files with 38 additions and 8 deletions
|
|
@ -256,11 +256,11 @@ class MariaDBDatabase(Database):
|
|||
index_name=index_name
|
||||
))
|
||||
|
||||
def add_index(self, doctype, fields, index_name=None):
|
||||
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 = 'tab' + doctype
|
||||
table_name = get_table_name(doctype)
|
||||
if not self.has_index(table_name, index_name):
|
||||
self.commit()
|
||||
self.sql("""ALTER TABLE `%s`
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ class PostgresDatabase(Database):
|
|||
return self.sql("""SELECT 1 FROM pg_indexes WHERE tablename='{table_name}'
|
||||
and indexname='{index_name}' limit 1""".format(table_name=table_name, index_name=index_name))
|
||||
|
||||
def add_index(self, doctype, fields, index_name=None):
|
||||
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`"""
|
||||
table_name = get_table_name(doctype)
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ class TestDB(unittest.TestCase):
|
|||
frappe.db.set_value("Print Settings", "Print Settings", fieldname, inp["value"])
|
||||
self.assertEqual(frappe.db.get_single_value("Print Settings", fieldname), inp["value"])
|
||||
|
||||
#teardown
|
||||
#teardown
|
||||
clear_custom_fields("Print Settings")
|
||||
|
||||
def test_log_touched_tables(self):
|
||||
|
|
@ -192,6 +192,7 @@ class TestDB(unittest.TestCase):
|
|||
frappe.delete_doc(test_doctype, doc)
|
||||
clear_custom_fields(test_doctype)
|
||||
|
||||
|
||||
@run_only_if(db_type_is.MARIADB)
|
||||
class TestDDLCommandsMaria(unittest.TestCase):
|
||||
test_table_name = "TestNotes"
|
||||
|
|
@ -200,7 +201,7 @@ class TestDDLCommandsMaria(unittest.TestCase):
|
|||
frappe.db.commit()
|
||||
frappe.db.sql(
|
||||
f"""
|
||||
CREATE TABLE `tab{self.test_table_name}` (`id` INT NULL,PRIMARY KEY (`id`));
|
||||
CREATE TABLE `tab{self.test_table_name}` (`id` INT NULL, content TEXT, PRIMARY KEY (`id`));
|
||||
"""
|
||||
)
|
||||
|
||||
|
|
@ -225,7 +226,10 @@ class TestDDLCommandsMaria(unittest.TestCase):
|
|||
|
||||
def test_describe(self) -> None:
|
||||
self.assertEqual(
|
||||
(("id", "int(11)", "NO", "PRI", None, ""),),
|
||||
(
|
||||
("id", "int(11)", "NO", "PRI", None, ""),
|
||||
("content", "text", "YES", "", None, ""),
|
||||
),
|
||||
frappe.db.describe(self.test_table_name),
|
||||
)
|
||||
|
||||
|
|
@ -235,6 +239,17 @@ class TestDDLCommandsMaria(unittest.TestCase):
|
|||
self.assertGreater(len(test_table_description), 0)
|
||||
self.assertIn("varchar(255)", test_table_description[0])
|
||||
|
||||
def test_add_index(self) -> None:
|
||||
index_name = "test_index"
|
||||
frappe.db.add_index(self.test_table_name, ["id", "content(50)"], index_name)
|
||||
indexs_in_table = frappe.db.sql(
|
||||
f"""
|
||||
SHOW INDEX FROM tab{self.test_table_name}
|
||||
WHERE Key_name = '{index_name}';
|
||||
"""
|
||||
)
|
||||
self.assertEquals(len(indexs_in_table), 2)
|
||||
|
||||
|
||||
@run_only_if(db_type_is.POSTGRES)
|
||||
class TestDDLCommandsPost(unittest.TestCase):
|
||||
|
|
@ -243,7 +258,7 @@ class TestDDLCommandsPost(unittest.TestCase):
|
|||
def setUp(self) -> None:
|
||||
frappe.db.sql(
|
||||
f"""
|
||||
CREATE TABLE "tab{self.test_table_name}" ("id" INT NULL,PRIMARY KEY ("id"))
|
||||
CREATE TABLE "tab{self.test_table_name}" ("id" INT NULL, content text, PRIMARY KEY ("id"))
|
||||
"""
|
||||
)
|
||||
|
||||
|
|
@ -268,7 +283,9 @@ class TestDDLCommandsPost(unittest.TestCase):
|
|||
self.test_table_name = new_table_name
|
||||
|
||||
def test_describe(self) -> None:
|
||||
self.assertEqual([("id",)], frappe.db.describe(self.test_table_name))
|
||||
self.assertEqual(
|
||||
[("id",), ("content",)], frappe.db.describe(self.test_table_name)
|
||||
)
|
||||
|
||||
def test_change_type(self) -> None:
|
||||
frappe.db.change_column_type(self.test_table_name, "id", "varchar(255)")
|
||||
|
|
@ -286,3 +303,16 @@ class TestDDLCommandsPost(unittest.TestCase):
|
|||
)
|
||||
self.assertGreater(len(check_change), 0)
|
||||
self.assertIn("character varying", check_change[0])
|
||||
|
||||
def test_add_index(self) -> None:
|
||||
index_name = "test_index"
|
||||
frappe.db.add_index(self.test_table_name, ["id", "content(50)"], index_name)
|
||||
indexs_in_table = frappe.db.sql(
|
||||
f"""
|
||||
SELECT indexname
|
||||
FROM pg_indexes
|
||||
WHERE tablename = 'tab{self.test_table_name}'
|
||||
AND indexname = '{index_name}' ;
|
||||
""",
|
||||
)
|
||||
self.assertEquals(len(indexs_in_table), 1)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue