human hand off fix
This commit is contained in:
parent
7b39f956e6
commit
e72f63dc54
1 changed files with 16 additions and 15 deletions
|
|
@ -42,21 +42,22 @@ async def ensure_mongo_index(collection, keys, **options) -> None:
|
|||
desired_unique = bool(options.get("unique"))
|
||||
desired_sparse = bool(options.get("sparse"))
|
||||
|
||||
async for index in collection.list_indexes():
|
||||
if index["name"] == "_id_":
|
||||
continue
|
||||
index_key = list(index["key"].items())
|
||||
same_key = index_key == key_list
|
||||
same_name = index["name"] == name
|
||||
if not same_key and not same_name:
|
||||
continue
|
||||
same_options = (
|
||||
bool(index.get("unique")) == desired_unique
|
||||
and bool(index.get("sparse")) == desired_sparse
|
||||
)
|
||||
if same_key and same_name and same_options:
|
||||
return
|
||||
await collection.drop_index(index["name"])
|
||||
async with await collection.list_indexes() as cursor:
|
||||
async for index in cursor:
|
||||
if index["name"] == "_id_":
|
||||
continue
|
||||
index_key = list(index["key"].items())
|
||||
same_key = index_key == key_list
|
||||
same_name = index["name"] == name
|
||||
if not same_key and not same_name:
|
||||
continue
|
||||
same_options = (
|
||||
bool(index.get("unique")) == desired_unique
|
||||
and bool(index.get("sparse")) == desired_sparse
|
||||
)
|
||||
if same_key and same_name and same_options:
|
||||
return
|
||||
await collection.drop_index(index["name"])
|
||||
|
||||
await collection.create_index(keys, **options)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue