|
1 | | -from sqlalchemy import select |
| 1 | +from sqlalchemy import insert, select |
2 | 2 | from sqlalchemy.orm import joinedload |
3 | 3 |
|
4 | 4 | from ..models.inner_db.tables import Container, TopLevelContainer |
5 | 5 | from ..models.shipments import ShipmentChildren |
6 | 6 | from ..models.top_level_containers import TopLevelContainerOut |
7 | 7 | from ..utils.database import inner_db |
8 | 8 | from ..utils.query import query_result_to_object |
| 9 | +from ..utils.session import retry_if_exists |
9 | 10 |
|
10 | 11 |
|
11 | 12 | def get_unassigned(limit: int, page: int): |
@@ -43,3 +44,39 @@ def get_internal_containers(limit: int, page: int): |
43 | 44 | query = select(TopLevelContainer).filter(TopLevelContainer.isInternal.is_(True)) |
44 | 45 |
|
45 | 46 | return inner_db.paginate(query, limit, page, slow_count=False, scalar=False) |
| 47 | + |
| 48 | + |
| 49 | +@retry_if_exists |
| 50 | +def create_preloaded_inventory_dewar(name: str): |
| 51 | + tlc = inner_db.session.scalar( |
| 52 | + insert(TopLevelContainer).returning(TopLevelContainer), |
| 53 | + {"name": name, "isInternal": True, "code": name}, |
| 54 | + ) |
| 55 | + |
| 56 | + containers = inner_db.session.scalars( |
| 57 | + insert(Container).returning(Container), |
| 58 | + [ |
| 59 | + {"name": i, "isInternal": True, "topLevelContainerId": tlc.id, "type": "puck", "subType": "2"} |
| 60 | + for i in range(1, 6) |
| 61 | + ], |
| 62 | + ).all() |
| 63 | + |
| 64 | + inner_db.session.execute( |
| 65 | + insert(Container), |
| 66 | + [ |
| 67 | + { |
| 68 | + "name": f"Gridbox_{pos + 1}_Puck_{container.name}", |
| 69 | + "isInternal": True, |
| 70 | + "parentId": container.id, |
| 71 | + "type": "gridBox", |
| 72 | + "subType": "auto", |
| 73 | + "location": pos + 1, |
| 74 | + } |
| 75 | + for pos in range(12) |
| 76 | + for container in containers |
| 77 | + ], |
| 78 | + ) |
| 79 | + |
| 80 | + inner_db.session.commit() |
| 81 | + |
| 82 | + return tlc |
0 commit comments