From 5420c0a36426250cf913c0645f361a0dfd6e2da1 Mon Sep 17 00:00:00 2001 From: DeveloperAnonymous <40847862+DeveloperAnonymous@users.noreply.github.com> Date: Tue, 4 Apr 2023 23:38:48 -0400 Subject: [PATCH 1/3] Made index_type a valid argument when creating an index --- tortoise/indexes.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tortoise/indexes.py b/tortoise/indexes.py index 7ccf49fbb..96b386eb9 100644 --- a/tortoise/indexes.py +++ b/tortoise/indexes.py @@ -8,7 +8,6 @@ class Index: - INDEX_TYPE = "" INDEX_CREATE_TEMPLATE = ( "CREATE{index_type}INDEX {index_name} ON {table_name} ({fields}){extra};" ) @@ -18,6 +17,7 @@ def __init__( *expressions: Term, fields: Optional[Tuple[str, ...]] = None, name: Optional[str] = None, + index_type: Optional[str] = "" ): """ All kinds of index parent class, default is BTreeIndex. @@ -37,6 +37,8 @@ def __init__( self.name = name self.expressions = expressions self.extra = "" + self.index_type = index_type + def get_sql(self, schema_generator: "BaseSchemaGenerator", model: "Type[Model]", safe: bool): if self.fields: @@ -45,7 +47,7 @@ def get_sql(self, schema_generator: "BaseSchemaGenerator", model: "Type[Model]", index_name=schema_generator.quote( self.name or schema_generator._generate_index_name("idx", model, self.fields) ), - index_type=f" {self.INDEX_TYPE} ", + index_type=f" {self.index_type} ", table_name=schema_generator.quote(model._meta.db_table), fields=", ".join(schema_generator.quote(f) for f in self.fields), extra=self.extra, @@ -55,7 +57,7 @@ def get_sql(self, schema_generator: "BaseSchemaGenerator", model: "Type[Model]", return self.INDEX_CREATE_TEMPLATE.format( exists="IF NOT EXISTS " if safe else "", index_name=self.index_name(schema_generator, model), - index_type=f" {self.INDEX_TYPE} ", + index_type=f" {self.index_type} ", table_name=schema_generator.quote(model._meta.db_table), fields=", ".join(expressions), extra=self.extra, @@ -72,8 +74,9 @@ def __init__( fields: Optional[Tuple[str, ...]] = None, name: Optional[str] = None, condition: Optional[dict] = None, + index_type: Optional[str] = "" ): - super().__init__(*expressions, fields=fields, name=name) + super().__init__(*expressions, fields=fields, name=name, index_type=index_type) if condition: cond = " WHERE " items = [] From bf4856c6994230b0bae9ccbde61d9b20809662d2 Mon Sep 17 00:00:00 2001 From: DeveloperAnonymous <40847862+DeveloperAnonymous@users.noreply.github.com> Date: Tue, 4 Apr 2023 23:40:29 -0400 Subject: [PATCH 2/3] Made index_type a valid argument when creating an index --- tortoise/indexes.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tortoise/indexes.py b/tortoise/indexes.py index 96b386eb9..d85ac27e3 100644 --- a/tortoise/indexes.py +++ b/tortoise/indexes.py @@ -8,6 +8,7 @@ class Index: + INDEX_TYPE = "" INDEX_CREATE_TEMPLATE = ( "CREATE{index_type}INDEX {index_name} ON {table_name} ({fields}){extra};" ) @@ -17,7 +18,7 @@ def __init__( *expressions: Term, fields: Optional[Tuple[str, ...]] = None, name: Optional[str] = None, - index_type: Optional[str] = "" + index_type: Optional[str] = None ): """ All kinds of index parent class, default is BTreeIndex. @@ -37,7 +38,7 @@ def __init__( self.name = name self.expressions = expressions self.extra = "" - self.index_type = index_type + self.index_type = index_type or self.INDEX_TYPE def get_sql(self, schema_generator: "BaseSchemaGenerator", model: "Type[Model]", safe: bool): From dd51a0568ce4d6426f40bd5cefb4245ac35e2c22 Mon Sep 17 00:00:00 2001 From: DeveloperAnonymous <40847862+DeveloperAnonymous@users.noreply.github.com> Date: Tue, 4 Apr 2023 23:41:22 -0400 Subject: [PATCH 3/3] made index_type arg none for partialindex --- tortoise/indexes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tortoise/indexes.py b/tortoise/indexes.py index d85ac27e3..65a6da632 100644 --- a/tortoise/indexes.py +++ b/tortoise/indexes.py @@ -75,7 +75,7 @@ def __init__( fields: Optional[Tuple[str, ...]] = None, name: Optional[str] = None, condition: Optional[dict] = None, - index_type: Optional[str] = "" + index_type: Optional[str] = None ): super().__init__(*expressions, fields=fields, name=name, index_type=index_type) if condition: