diff --git a/src/backend_api/app/alembic/versions/cc39d4eb113b_added_gameitemid_to_identified_items.py b/src/backend_api/app/alembic/versions/cc39d4eb113b_added_gameitemid_to_identified_items.py new file mode 100644 index 00000000..dc082e99 --- /dev/null +++ b/src/backend_api/app/alembic/versions/cc39d4eb113b_added_gameitemid_to_identified_items.py @@ -0,0 +1,31 @@ +"""Added gameItemId to identified items + +Revision ID: cc39d4eb113b +Revises: e38727349f3f +Create Date: 2025-10-25 22:26:59.343322 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = "cc39d4eb113b" +down_revision: Union[str, None] = "e38727349f3f" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column("item", sa.Column("gameItemId", sa.Text(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("item", "gameItemId") + # ### end Alembic commands ### diff --git a/src/backend_api/app/core/models/models.py b/src/backend_api/app/core/models/models.py index 65435167..0a2bd270 100644 --- a/src/backend_api/app/core/models/models.py +++ b/src/backend_api/app/core/models/models.py @@ -84,7 +84,8 @@ class Item(_ItemBase, Base): # Hypertable # For hypertable specs, see alembic revision `cc29b89156db' __tablename__ = "item" - + # TODO do something about None and make it not nullable + gameItemId: Mapped[str | None] = mapped_column(Text) prefixes: Mapped[int | None] = mapped_column(SmallInteger) suffixes: Mapped[int | None] = mapped_column(SmallInteger) foilVariation: Mapped[int | None] = mapped_column(SmallInteger) diff --git a/src/backend_api/app/core/schemas/item.py b/src/backend_api/app/core/schemas/item.py index 72299c09..6b0179be 100644 --- a/src/backend_api/app/core/schemas/item.py +++ b/src/backend_api/app/core/schemas/item.py @@ -19,6 +19,7 @@ class _BaseItem(_pydantic.BaseModel): itemBaseTypeId: int ilvl: int rarity: str + gameItemId: str | None = None identified: bool = True currencyAmount: float | None = None currencyId: int | None = None diff --git a/src/backend_data_retrieval/data_retrieval_app/external_data_retrieval/transforming_data/transform_poe_api_data.py b/src/backend_data_retrieval/data_retrieval_app/external_data_retrieval/transforming_data/transform_poe_api_data.py index 0d9476a8..df4c2157 100644 --- a/src/backend_data_retrieval/data_retrieval_app/external_data_retrieval/transforming_data/transform_poe_api_data.py +++ b/src/backend_data_retrieval/data_retrieval_app/external_data_retrieval/transforming_data/transform_poe_api_data.py @@ -32,6 +32,7 @@ def _create_item_table( """ self.item_columns = [ "itemId", + "id", "name", "league", "baseType", @@ -144,8 +145,8 @@ def transform_influences(row: pd.DataFrame, influence_columns: list[str]): if "extended.suffixes" in item_df.columns: rename_extended_map["extended.suffixes"] = "suffixes" - if rename_extended_map: - item_df = item_df.rename(columns=rename_extended_map) + rename_map = {**rename_extended_map, "id": "gameItemId"} + item_df = item_df.rename(columns=rename_map) stash_series = item_df["stash"].str.split(" ") currency_series = item_df["note"].str.split(" ") @@ -192,6 +193,7 @@ def item_table_columns_to_not_drop(self) -> set[str]: dont_drop_columns = self._item_table_columns_to_not_drop except AttributeError: dont_drop_columns = { + "gameItemId", "name", "league", "itemBaseTypeId",