-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathitem_modifier.py
More file actions
92 lines (79 loc) · 2.91 KB
/
Copy pathitem_modifier.py
File metadata and controls
92 lines (79 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from sqlalchemy.orm import Session
from app import crud
from app.core.models.models import (
Currency,
Item,
ItemBaseType,
ItemModifier,
Modifier,
)
from app.core.schemas.item_modifier import ItemModifierCreate
from app.tests.utils.model_utils.item import generate_random_item
from app.tests.utils.model_utils.modifier import generate_random_modifier
from app.tests.utils.utils import random_float, random_int
async def create_random_item_modifier_dict(
db: Session, retrieve_dependencies: bool | None = False
) -> (
dict
| tuple[
dict,
list[dict | ItemBaseType | Currency | Item | Modifier] | None,
]
):
"""Create a random item modifier dictionary.
Args:
db (Session): DB session.
retrieve_dependencies (bool | None): Whether to retrieve dependencies. Defaults to False.
Returns:
_type_: Random item modifier dictionary or tuple containing the dictionary and optional dependencies.
"""
roll_value = random_float()
# Set the dependencies
if not retrieve_dependencies:
item_dict, item = await generate_random_item(db)
else:
item_dict, item, deps = await generate_random_item(
db, retrieve_dependencies=retrieve_dependencies
)
itemId = item.itemId
modifier_dict, modifier = await generate_random_modifier(db)
modifierId = modifier.modifierId
position = modifier.position
item_modifier_dict = {
"itemId": itemId,
"modifierId": modifierId,
"position": position,
"roll": roll_value,
"createdHoursSinceLaunch": random_int(small_int=True),
}
if not retrieve_dependencies:
return item_modifier_dict
else: # Gather dependencies and return
deps += [item_dict, item, modifier_dict, modifier]
return item_modifier_dict, deps
async def generate_random_item_modifier(
db: Session, retrieve_dependencies: bool | None = False
) -> tuple[
dict,
ItemModifier,
list[dict | ItemBaseType | Currency | Item | Modifier] | None,
]:
"""Generate a random item modifier.
Args:
db (Session): DB session.
retrieve_dependencies (bool, optional): Whether to retrieve dependencies. Defaults to False.
Returns:
Tuple[ Dict, ItemModifier, List[Union[Dict, ItemBaseType, Currency, Item, Modifier]]], ]: \n
Random item modifier dictionary, ItemModifier db object and optional dependencies.
"""
output = await create_random_item_modifier_dict(db, retrieve_dependencies)
if not retrieve_dependencies:
item_modifier_dict = output
else:
item_modifier_dict, deps = output
item_modifier_create = ItemModifierCreate(**item_modifier_dict)
item_modifier = await crud.CRUD_itemModifier.create(db, obj_in=item_modifier_create)
if not retrieve_dependencies:
return item_modifier_dict, item_modifier
else:
return item_modifier_dict, item_modifier, deps