From 7f58cc9d7e2b0bd46a63668887556458f1c4c354 Mon Sep 17 00:00:00 2001 From: cmsato09 <55464277+cmsato09@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:21:52 -0800 Subject: [PATCH 01/27] Added Vercel website to CORS origins --- src/app/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/main.py b/src/app/main.py index 3d3e4ad..d9190bf 100644 --- a/src/app/main.py +++ b/src/app/main.py @@ -55,6 +55,7 @@ "http://localhost", "http://localhost:8080", "http://localhost:3000", + "https://dqmonsters-db.vercel.app", ] app.add_middleware( From 6ec16fb2ed10271334fec573f0570a7384f84e9c Mon Sep 17 00:00:00 2001 From: cmsato09 <55464277+cmsato09@users.noreply.github.com> Date: Sun, 2 Feb 2025 23:06:19 -0800 Subject: [PATCH 02/27] Replaced Readme screenshot images --- src/static/images/readme/FastAPI-readme-1.jpg | Bin 120587 -> 0 bytes src/static/images/readme/FastAPI-readme-2.jpg | Bin 149468 -> 0 bytes .../images/readme/FastAPI-screenshot-1.JPG | Bin 0 -> 161902 bytes .../images/readme/FastAPI-screenshot-2.JPG | Bin 0 -> 116610 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/static/images/readme/FastAPI-readme-1.jpg delete mode 100644 src/static/images/readme/FastAPI-readme-2.jpg create mode 100644 src/static/images/readme/FastAPI-screenshot-1.JPG create mode 100644 src/static/images/readme/FastAPI-screenshot-2.JPG diff --git a/src/static/images/readme/FastAPI-readme-1.jpg b/src/static/images/readme/FastAPI-readme-1.jpg deleted file mode 100644 index b299853537282583d78beae78f142038b3388d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120587 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 T`UxO0k_40@px<8D9|QjvNY?rD diff --git a/src/static/images/readme/FastAPI-readme-2.jpg b/src/static/images/readme/FastAPI-readme-2.jpg deleted file mode 100644 index c2b340d26c7ccfd0afb23b5b7ac78d01b773a1c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149468 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 kFbVH=B&c(j{44n{9LBl(>-!QjIl-Bbp0k=YW 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

2YCvmk4uH;4Ed@=&H=-i6 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

eH-_Okq4Fb9=xbS{!D%1= zd|Bm`CGi?~)F_A{(ngky>+Eu013Z@>4X6^8M_0{y^JjR;-#_{qH(DMP6x5a-`TfTo z^s6u`9VLB2DxF9FD-)|6dczbo6)b1v%RX_C+_z$#Jn{$Z==grac8-|QE!q=PjA^am zytK3CuHn`_&IkW;zV&Ev;Wy%V-gM)w6XD!#!a3n#%4jjyuU61P@dP=><;!}Nu`p_=Ut{fcvuMy3E)ioea$cUpZm zt6S)yXR;_dFcGKXXa40}io*~1uk?2ebjF=6BQ>PV0^;PBXxf&kXq;R6}Og) z^X%*wC&>rW6cIk(^7MG$(E>-ou1fAoFWyeU&@l8(k&X4Si&-paPX8Nb!RXLWg_#we|NC%`A5?(#00(DVE)O$Qn_;`!%96|O@^(TGLXq6Z< z_(Js?Qf63ocv)_8(;D+bh7Z?mG|H(VuD(-6iu@WCeOC9e>{Y8Z#R zyfV3z`2C%z)6e(Qx(^AyTdP{*%0AxOYIONYM1P}1G26H&-?naD^?foqgEGNKm*`eO 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 literal 0 HcmV?d00001 diff --git a/src/static/images/readme/FastAPI-screenshot-2.JPG b/src/static/images/readme/FastAPI-screenshot-2.JPG new file mode 100644 index 0000000000000000000000000000000000000000..79e9007c7f87bc2b6017ce8c96723c3bd1d8e910 GIT binary patch literal 116610 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 literal 0 HcmV?d00001 From 429267db6e382fec439dce06bc2a08377e55d684 Mon Sep 17 00:00:00 2001 From: cmsato09 <55464277+cmsato09@users.noreply.github.com> Date: Sun, 2 Feb 2025 23:09:06 -0800 Subject: [PATCH 03/27] Fixed screenshot image src link in README --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8b4fd14..cebee09 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,9 @@ This repo is deployed on [Google Cloud Run](hhttps://cloud.google.com/run/) Access the Swagger UI interface of this FastAPI at https://dqmonstersdb-api-743047725852.us-central1.run.app/docs -![Swagger UI homepage](static/images/readme/FastAPI-readme-1.jpg) -![Trying out a endpoint](static/images/readme/FastAPI-readme-2.jpg) +![Swagger UI homepage](src/static/images/readme/FastAPI-screenshot-1.jpg) + +![Trying out a endpoint](src/static/images/readme/FastAPI-screenshot-2.jpg) ## How to Run Locally 1. Clone this repo onto your local machine. From d60b472cdbb19c645a323efbe94e98a8021eafd7 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Mon, 23 Jun 2025 23:48:18 -0700 Subject: [PATCH 04/27] Moved get_session from main.py to database.py --- src/app/database.py | 7 ++++++- src/app/main.py | 7 +------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/app/database.py b/src/app/database.py index 47a1d14..a79540e 100644 --- a/src/app/database.py +++ b/src/app/database.py @@ -1,6 +1,6 @@ from pathlib import Path -from sqlmodel import SQLModel, create_engine +from sqlmodel import Session, SQLModel, create_engine app_dir = Path(__file__).resolve().parent project_dir = app_dir.parent @@ -13,3 +13,8 @@ def create_db_and_tables(): SQLModel.metadata.create_all(engine) + + +async def get_session(): + with Session(engine) as session: + yield session diff --git a/src/app/main.py b/src/app/main.py index d9190bf..f26ae47 100644 --- a/src/app/main.py +++ b/src/app/main.py @@ -5,7 +5,7 @@ from fastapi.staticfiles import StaticFiles from sqlmodel import Session, select -from src.app.database import engine +from src.app.database import get_session from src.app.model_enums import ( ItemCategory, ItemSellLocation, @@ -67,11 +67,6 @@ ) -async def get_session(): # place in database.py? - with Session(engine) as session: - yield session - - @app.get("/") def root(): return { From ebb24f744dfcd4f736b99ec9a423e1db090026ec Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 24 Jun 2025 00:03:25 -0700 Subject: [PATCH 05/27] Moved read_monsters endpoints to dqm1_endpoint router from main.py --- src/app/main.py | 98 +++++++++++++++---------------- src/app/routers/__init__.py | 0 src/app/routers/dqm1_endpoints.py | 78 ++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 49 deletions(-) create mode 100644 src/app/routers/__init__.py create mode 100644 src/app/routers/dqm1_endpoints.py diff --git a/src/app/main.py b/src/app/main.py index f26ae47..0c390c1 100644 --- a/src/app/main.py +++ b/src/app/main.py @@ -16,9 +16,6 @@ Item, MonsterBreedingLink, MonsterBreedingLinkReadWithInfo, - MonsterDetail, - MonsterDetailSkill, - MonsterDetailWithFamily, MonsterFamily, MonsterFamilyReadWithMonsterDetail, Skill, @@ -26,6 +23,7 @@ SkillCombineRead, SkillUpgradeRead, ) +from src.app.routers import dqm1_endpoints tags_metadata = [ { @@ -66,6 +64,8 @@ allow_headers=["*"], ) +app.include_router(dqm1_endpoints.router) + @app.get("/") def root(): @@ -74,52 +74,52 @@ def root(): } -@app.get( - "/dqm1/monsters", - response_model=List[MonsterDetailWithFamily], - tags=["dqm1 monsters"], -) -async def read_monsters( - *, session: Session = Depends(get_session), family: Optional[int] = None -): - """ - **Parameter Descriptions**
- **new_name** : updated name used in later Dragon Quest games
- **old_name** : name used in the game
- **description** : in game beastiary description
- **family** : a monster is part of one of 10 different monster families
- """ - monsters = select(MonsterDetail) - if family: - monsters = monsters.where(MonsterDetail.family_id == family) - monsters_result = session.exec(monsters).all() - return monsters_result - - -@app.get( - "/dqm1/monsters/{monster_id}", - response_model=MonsterDetailWithFamily, - tags=["dqm1 monsters"], -) -async def read_monster(*, session: Session = Depends(get_session), monster_id: int): - monster = session.get(MonsterDetail, monster_id) - if not monster: - raise HTTPException(status_code=404, detail="Monster not found") - return monster - - -@app.get( - "/dqm1/monstersandskill/{monster_id}", - response_model=MonsterDetailSkill, - tags=["dqm1 monsters"], -) -async def read_monster_skill( - *, session: Session = Depends(get_session), monster_id: int -): - monster = session.get(MonsterDetail, monster_id) - if not monster: - raise HTTPException(status_code=404, detail="Monster not found") - return monster +# @app.get( +# "/dqm1/monsters", +# response_model=List[MonsterDetailWithFamily], +# tags=["dqm1 monsters"], +# ) +# async def read_monsters( +# *, session: Session = Depends(get_session), family: Optional[int] = None +# ): +# """ +# **Parameter Descriptions**
+# **new_name** : updated name used in later Dragon Quest games
+# **old_name** : name used in the game
+# **description** : in game beastiary description
+# **family** : a monster is part of one of 10 different monster families
+# """ +# monsters = select(MonsterDetail) +# if family: +# monsters = monsters.where(MonsterDetail.family_id == family) +# monsters_result = session.exec(monsters).all() +# return monsters_result + + +# @app.get( +# "/dqm1/monsters/{monster_id}", +# response_model=MonsterDetailWithFamily, +# tags=["dqm1 monsters"], +# ) +# async def read_monster(*, session: Session = Depends(get_session), monster_id: int): +# monster = session.get(MonsterDetail, monster_id) +# if not monster: +# raise HTTPException(status_code=404, detail="Monster not found") +# return monster + + +# @app.get( +# "/dqm1/monstersandskill/{monster_id}", +# response_model=MonsterDetailSkill, +# tags=["dqm1 monsters"], +# ) +# async def read_monster_skill( +# *, session: Session = Depends(get_session), monster_id: int +# ): +# monster = session.get(MonsterDetail, monster_id) +# if not monster: +# raise HTTPException(status_code=404, detail="Monster not found") +# return monster @app.get( diff --git a/src/app/routers/__init__.py b/src/app/routers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py new file mode 100644 index 0000000..afb089a --- /dev/null +++ b/src/app/routers/dqm1_endpoints.py @@ -0,0 +1,78 @@ +from typing import List, Optional + +from fastapi import APIRouter, Depends, HTTPException +from sqlmodel import Session, select + +from src.app.database import get_session +from src.app.models import ( + MonsterDetail, + MonsterDetailWithFamily, + MonsterDetailSkill, +) + +router = APIRouter( + prefix="/dqm1", +) + +tags_metadata = [ + { + "name": "dqm1 monsters", + "description": "Monster list", + }, + { + "name": "dqm1 skills", + "description": "Skills that monsters learn and inherit", + }, + { + "name": "dqm1 items", + "description": "Useful items found in the game and their description", + }, +] + + +@router.get( + "/monsters", + response_model=List[MonsterDetailWithFamily], + tags=["dqm1 monsters"], +) +async def read_monsters( + *, session: Session = Depends(get_session), family: Optional[int] = None +): + """ + **Parameter Descriptions**
+ **new_name** : updated name used in later Dragon Quest games
+ **old_name** : name used in the game
+ **description** : in game beastiary description
+ **family** : a monster is part of one of 10 different monster families
+ """ + monsters = select(MonsterDetail) + if family: + monsters = monsters.where(MonsterDetail.family_id == family) + monsters_result = session.exec(monsters).all() + return monsters_result + + +@router.get( + "/monsters/{monster_id}", + response_model=MonsterDetailWithFamily, + tags=["dqm1 monsters"], +) +async def read_monster(*, session: Session = Depends(get_session), monster_id: int): + monster = session.get(MonsterDetail, monster_id) + if not monster: + raise HTTPException(status_code=404, detail="Monster not found") + return monster + + +@router.get( + "/monstersandskill/{monster_id}", + response_model=MonsterDetailSkill, + tags=["dqm1 monsters"], +) +async def read_monster_skill( + *, session: Session = Depends(get_session), monster_id: int +): + monster = session.get(MonsterDetail, monster_id) + if not monster: + raise HTTPException(status_code=404, detail="Monster not found") + return monster From 3f464280536962c483fadbe2e2675ebdab5cbf87 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 24 Jun 2025 00:41:13 -0700 Subject: [PATCH 06/27] Moved read_family endpoints from main.py to dqm1 router --- src/app/main.py | 62 ------------------------------- src/app/routers/dqm1_endpoints.py | 14 +++++++ 2 files changed, 14 insertions(+), 62 deletions(-) diff --git a/src/app/main.py b/src/app/main.py index 0c390c1..1112379 100644 --- a/src/app/main.py +++ b/src/app/main.py @@ -16,8 +16,6 @@ Item, MonsterBreedingLink, MonsterBreedingLinkReadWithInfo, - MonsterFamily, - MonsterFamilyReadWithMonsterDetail, Skill, SkillCombine, SkillCombineRead, @@ -74,66 +72,6 @@ def root(): } -# @app.get( -# "/dqm1/monsters", -# response_model=List[MonsterDetailWithFamily], -# tags=["dqm1 monsters"], -# ) -# async def read_monsters( -# *, session: Session = Depends(get_session), family: Optional[int] = None -# ): -# """ -# **Parameter Descriptions**
-# **new_name** : updated name used in later Dragon Quest games
-# **old_name** : name used in the game
-# **description** : in game beastiary description
-# **family** : a monster is part of one of 10 different monster families
-# """ -# monsters = select(MonsterDetail) -# if family: -# monsters = monsters.where(MonsterDetail.family_id == family) -# monsters_result = session.exec(monsters).all() -# return monsters_result - - -# @app.get( -# "/dqm1/monsters/{monster_id}", -# response_model=MonsterDetailWithFamily, -# tags=["dqm1 monsters"], -# ) -# async def read_monster(*, session: Session = Depends(get_session), monster_id: int): -# monster = session.get(MonsterDetail, monster_id) -# if not monster: -# raise HTTPException(status_code=404, detail="Monster not found") -# return monster - - -# @app.get( -# "/dqm1/monstersandskill/{monster_id}", -# response_model=MonsterDetailSkill, -# tags=["dqm1 monsters"], -# ) -# async def read_monster_skill( -# *, session: Session = Depends(get_session), monster_id: int -# ): -# monster = session.get(MonsterDetail, monster_id) -# if not monster: -# raise HTTPException(status_code=404, detail="Monster not found") -# return monster - - -@app.get( - "/dqm1/family/{family_id}", - response_model=MonsterFamilyReadWithMonsterDetail, - tags=["dqm1 monsters"], -) -async def read_family(*, session: Session = Depends(get_session), family_id: int): - family = session.get(MonsterFamily, family_id) - if not family: - raise HTTPException(status_code=404, detail="Family not found") - return family - - @app.get("/dqm1/skills", tags=["dqm1 skills"]) async def read_skills( *, diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index afb089a..e8a49bf 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -8,6 +8,8 @@ MonsterDetail, MonsterDetailWithFamily, MonsterDetailSkill, + MonsterFamily, + MonsterFamilyReadWithMonsterDetail, ) router = APIRouter( @@ -76,3 +78,15 @@ async def read_monster_skill( if not monster: raise HTTPException(status_code=404, detail="Monster not found") return monster + + +@router.get( + "/family/{family_id}", + response_model=MonsterFamilyReadWithMonsterDetail, + tags=["dqm1 monsters"], +) +async def read_family(*, session: Session = Depends(get_session), family_id: int): + family = session.get(MonsterFamily, family_id) + if not family: + raise HTTPException(status_code=404, detail="Family not found") + return family From 285c314c841e55d05c46d49469e09534bfbfd2f4 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 24 Jun 2025 00:51:03 -0700 Subject: [PATCH 07/27] Moved read_skill endpoints from main.py to dqm1 router --- src/app/main.py | 43 ------------------------------- src/app/routers/dqm1_endpoints.py | 21 +++++++++++++++ 2 files changed, 21 insertions(+), 43 deletions(-) diff --git a/src/app/main.py b/src/app/main.py index 1112379..822ba16 100644 --- a/src/app/main.py +++ b/src/app/main.py @@ -9,17 +9,11 @@ from src.app.model_enums import ( ItemCategory, ItemSellLocation, - SkillCategory, - SkillFamily, ) from src.app.models import ( Item, MonsterBreedingLink, MonsterBreedingLinkReadWithInfo, - Skill, - SkillCombine, - SkillCombineRead, - SkillUpgradeRead, ) from src.app.routers import dqm1_endpoints @@ -72,43 +66,6 @@ def root(): } -@app.get("/dqm1/skills", tags=["dqm1 skills"]) -async def read_skills( - *, - session: Session = Depends(get_session), - category: Optional[SkillCategory] = None, - skill_family: Optional[SkillFamily] = None, -): - skills = select(Skill) - if category: - skills = skills.where(Skill.category_type == category) - if skill_family: - skills = skills.where(Skill.family_type == skill_family) - skills_result = session.exec(skills).all() - return skills_result - - -@app.get( - "/dqm1/skills/{skill_id}", response_model=SkillUpgradeRead, tags=["dqm1 skills"] -) -async def read_skill(*, session: Session = Depends(get_session), skill_id: int): - skill = session.get(Skill, skill_id) - if not skill: - raise HTTPException(status_code=404, detail="Skill not found") - return skill - - -@app.get( - "/dqm1/skillcombine/{skill_id}", - response_model=List[SkillCombineRead], - tags=["dqm1 skills"], -) -async def get_skill_combo(*, session: Session = Depends(get_session), skill_id: int): - query = select(SkillCombine).where(SkillCombine.combo_skill_id == skill_id) - skill = session.exec(query).all() - return skill - - @app.get("/dqm1/items", tags=["dqm1 items"]) async def read_items( *, diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index e8a49bf..c6c3f44 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -4,12 +4,17 @@ from sqlmodel import Session, select from src.app.database import get_session +from src.app.model_enums import ( + SkillCategory, + SkillFamily, +) from src.app.models import ( MonsterDetail, MonsterDetailWithFamily, MonsterDetailSkill, MonsterFamily, MonsterFamilyReadWithMonsterDetail, + Skill, ) router = APIRouter( @@ -90,3 +95,19 @@ async def read_family(*, session: Session = Depends(get_session), family_id: int if not family: raise HTTPException(status_code=404, detail="Family not found") return family + + +@router.get("/dqm1/skills", tags=["dqm1 skills"]) +async def read_skills( + *, + session: Session = Depends(get_session), + category: Optional[SkillCategory] = None, + skill_family: Optional[SkillFamily] = None, +): + skills = select(Skill) + if category: + skills = skills.where(Skill.category_type == category) + if skill_family: + skills = skills.where(Skill.family_type == skill_family) + skills_result = session.exec(skills).all() + return skills_result From fdc0897dac8cc7fb69bbcb28a472a430e5256758 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 24 Jun 2025 00:51:40 -0700 Subject: [PATCH 08/27] Moved read_skill endpoints from main.py to dqm1 router --- src/app/routers/dqm1_endpoints.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index c6c3f44..4639be7 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -15,6 +15,9 @@ MonsterFamily, MonsterFamilyReadWithMonsterDetail, Skill, + SkillCombine, + SkillCombineRead, + SkillUpgradeRead, ) router = APIRouter( @@ -97,7 +100,7 @@ async def read_family(*, session: Session = Depends(get_session), family_id: int return family -@router.get("/dqm1/skills", tags=["dqm1 skills"]) +@router.get("/skills", tags=["dqm1 skills"]) async def read_skills( *, session: Session = Depends(get_session), @@ -111,3 +114,22 @@ async def read_skills( skills = skills.where(Skill.family_type == skill_family) skills_result = session.exec(skills).all() return skills_result + + +@router.get("/skills/{skill_id}", response_model=SkillUpgradeRead, tags=["dqm1 skills"]) +async def read_skill(*, session: Session = Depends(get_session), skill_id: int): + skill = session.get(Skill, skill_id) + if not skill: + raise HTTPException(status_code=404, detail="Skill not found") + return skill + + +@router.get( + "/skillcombine/{skill_id}", + response_model=List[SkillCombineRead], + tags=["dqm1 skills"], +) +async def get_skill_combo(*, session: Session = Depends(get_session), skill_id: int): + query = select(SkillCombine).where(SkillCombine.combo_skill_id == skill_id) + skill = session.exec(query).all() + return skill From 55c1ad7ca2658237db91a1658457824df0ccbb30 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 24 Jun 2025 00:53:12 -0700 Subject: [PATCH 09/27] Moved read_item endpoints from main.py to dqm1 router --- src/app/routers/dqm1_endpoints.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index 4639be7..8a59aac 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -5,10 +5,13 @@ from src.app.database import get_session from src.app.model_enums import ( + ItemCategory, + ItemSellLocation, SkillCategory, SkillFamily, ) from src.app.models import ( + Item, MonsterDetail, MonsterDetailWithFamily, MonsterDetailSkill, @@ -133,3 +136,27 @@ async def get_skill_combo(*, session: Session = Depends(get_session), skill_id: query = select(SkillCombine).where(SkillCombine.combo_skill_id == skill_id) skill = session.exec(query).all() return skill + + +@router.get("/items", tags=["dqm1 items"]) +async def read_items( + *, + session: Session = Depends(get_session), + category: Optional[ItemCategory] = None, + selllocation: Optional[ItemSellLocation] = None, +): + items = select(Item) + if category: + items = items.where(Item.item_category == category) + if selllocation: + items = items.where(Item.sell_location == selllocation) + items_result = session.exec(items).all() + return items_result + + +@router.get("/items/{item_id}", tags=["dqm1 items"]) +async def read_item(*, session: Session = Depends(get_session), item_id: int): + item = session.get(Item, item_id) + if not item: + raise HTTPException(status_code=404, detail="Item not found") + return item From 44509011ac1e38653e996c7d2e385994ab8fc6a1 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 24 Jun 2025 00:54:34 -0700 Subject: [PATCH 10/27] Moved breading combos endpoints from main.py to dqm1 router --- src/app/routers/dqm1_endpoints.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index 8a59aac..e6f3e0f 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -12,6 +12,8 @@ ) from src.app.models import ( Item, + MonsterBreedingLink, + MonsterBreedingLinkReadWithInfo, MonsterDetail, MonsterDetailWithFamily, MonsterDetailSkill, @@ -160,3 +162,24 @@ async def read_item(*, session: Session = Depends(get_session), item_id: int): if not item: raise HTTPException(status_code=404, detail="Item not found") return item + + +@router.get( + "/breeding/{monster_id}", + response_model=List[MonsterBreedingLinkReadWithInfo], + tags=["dqm1 monsters"], +) +async def get_breeding_combos( + *, session: Session = Depends(get_session), monster_id: int +): + """ + Given a monster_id, finds all breeding combination that results in + the target monster or uses the target monster as a parent + """ + query = select(MonsterBreedingLink).where( + (MonsterBreedingLink.child_id == monster_id) + | (MonsterBreedingLink.pedigree_id == monster_id) + | (MonsterBreedingLink.parent2_id == monster_id) + ) + breeding_combos = session.exec(query).all() + return breeding_combos From be8c8cfb4760040518d1cf183d4966e037784e56 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 24 Jun 2025 00:56:58 -0700 Subject: [PATCH 11/27] Removed unused imports in main.py --- src/app/main.py | 60 +------------------------------------------------ 1 file changed, 1 insertion(+), 59 deletions(-) diff --git a/src/app/main.py b/src/app/main.py index 822ba16..0c3eabf 100644 --- a/src/app/main.py +++ b/src/app/main.py @@ -1,20 +1,7 @@ -from typing import List, Optional - -from fastapi import Depends, FastAPI, HTTPException +from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles -from sqlmodel import Session, select -from src.app.database import get_session -from src.app.model_enums import ( - ItemCategory, - ItemSellLocation, -) -from src.app.models import ( - Item, - MonsterBreedingLink, - MonsterBreedingLinkReadWithInfo, -) from src.app.routers import dqm1_endpoints tags_metadata = [ @@ -64,48 +51,3 @@ def root(): return { "message": ("Welcome to the DQMonsters API. " "Go to the Swagger UI interface") } - - -@app.get("/dqm1/items", tags=["dqm1 items"]) -async def read_items( - *, - session: Session = Depends(get_session), - category: Optional[ItemCategory] = None, - selllocation: Optional[ItemSellLocation] = None, -): - items = select(Item) - if category: - items = items.where(Item.item_category == category) - if selllocation: - items = items.where(Item.sell_location == selllocation) - items_result = session.exec(items).all() - return items_result - - -@app.get("/dqm1/items/{item_id}", tags=["dqm1 items"]) -async def read_item(*, session: Session = Depends(get_session), item_id: int): - item = session.get(Item, item_id) - if not item: - raise HTTPException(status_code=404, detail="Item not found") - return item - - -@app.get( - "/dqm1/breeding/{monster_id}", - response_model=List[MonsterBreedingLinkReadWithInfo], - tags=["dqm1 monsters"], -) -async def get_breeding_combos( - *, session: Session = Depends(get_session), monster_id: int -): - """ - Given a monster_id, finds all breeding combination that results in - the target monster or uses the target monster as a parent - """ - query = select(MonsterBreedingLink).where( - (MonsterBreedingLink.child_id == monster_id) - | (MonsterBreedingLink.pedigree_id == monster_id) - | (MonsterBreedingLink.parent2_id == monster_id) - ) - breeding_combos = session.exec(query).all() - return breeding_combos From 86bd51e37cbd38c4bf055bf75fb034aa20139a88 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 24 Jun 2025 01:00:30 -0700 Subject: [PATCH 12/27] Removed tags_metadata since it's needed in main.py --- src/app/routers/dqm1_endpoints.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index e6f3e0f..bc6fbd8 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -29,21 +29,6 @@ prefix="/dqm1", ) -tags_metadata = [ - { - "name": "dqm1 monsters", - "description": "Monster list", - }, - { - "name": "dqm1 skills", - "description": "Skills that monsters learn and inherit", - }, - { - "name": "dqm1 items", - "description": "Useful items found in the game and their description", - }, -] - @router.get( "/monsters", From 9b2c6ffad9d49747f2dbd496f981541993b132a0 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 1 Jul 2025 15:49:15 -0700 Subject: [PATCH 13/27] refactor (models): Relocate DQM1 models to dedicated directory - Moved all DQM1 specific models from `src/app/models.py` to `src/app/models/dqm1/` for better organization - `src/app/models.py` file deleted because it's empty --- src/app/models/__init__.py | 0 src/app/models/dqm1/__init__.py | 0 src/app/models/dqm1/item.py | 17 + src/app/{models.py => models/dqm1/monster.py} | 414 +++++++----------- src/app/models/dqm1/skill.py | 120 +++++ 5 files changed, 287 insertions(+), 264 deletions(-) create mode 100644 src/app/models/__init__.py create mode 100644 src/app/models/dqm1/__init__.py create mode 100644 src/app/models/dqm1/item.py rename src/app/{models.py => models/dqm1/monster.py} (58%) create mode 100644 src/app/models/dqm1/skill.py diff --git a/src/app/models/__init__.py b/src/app/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/app/models/dqm1/__init__.py b/src/app/models/dqm1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/app/models/dqm1/item.py b/src/app/models/dqm1/item.py new file mode 100644 index 0000000..708732c --- /dev/null +++ b/src/app/models/dqm1/item.py @@ -0,0 +1,17 @@ +from typing import Optional + +from sqlmodel import Field, SQLModel + + +class Item(SQLModel, table=True): + """ + Lists all items sold in shops and found in the field + """ + + id: Optional[int] = Field(default=None, primary_key=True) + item_name: str + item_category: str + item_description: str + price: Optional[int] = Field(default=None) + sell_price: Optional[int] = Field(default=None) + sell_location: str diff --git a/src/app/models.py b/src/app/models/dqm1/monster.py similarity index 58% rename from src/app/models.py rename to src/app/models/dqm1/monster.py index d372bdc..1666b7a 100644 --- a/src/app/models.py +++ b/src/app/models/dqm1/monster.py @@ -1,264 +1,150 @@ -from typing import List, Optional - -from sqlmodel import Field, Relationship, SQLModel - - -class MonsterSkillLink(SQLModel, table=True): - """ - many-to-many association table linking a monster to three different skills. - """ - - id: Optional[int] = Field(default=None, primary_key=True) - monster_id: Optional[int] = Field( - default=None, - foreign_key="monsterdetail.id", - ) - skill_id: Optional[int] = Field( - default=None, - foreign_key="skill.id", - ) - - -class MonsterDetailBase(SQLModel): - """ - Monster details from in-game bestiary. Shows name, family, and description. - """ - - new_name: str - old_name: str - description: str - - # one-to-many relation where a family is linked to many monsters - family_id: int = Field(foreign_key="monsterfamily.id") - - -class MonsterDetail(MonsterDetailBase, table=True): - id: Optional[int] = Field(default=None, primary_key=True) - - family: List["MonsterFamily"] = Relationship(back_populates="monsters") - skills: List["Skill"] = Relationship( - back_populates="monsters", link_model=MonsterSkillLink - ) - - -class MonsterDetailRead(MonsterDetailBase): - id: int - - -class MonsterFamilyBase(SQLModel): - """ - There are 10 monster families in the game. - """ - - family_eng: str - - -class MonsterFamily(MonsterFamilyBase, table=True): - """ - one-to-many relation between family and monsters. - """ - - id: Optional[int] = Field(default=None, primary_key=True) - monsters: List[MonsterDetail] = Relationship(back_populates="family") - - -class MonsterFamilyRead(MonsterFamilyBase): - id: int - - -class MonsterDetailWithFamily(MonsterDetailRead): - family: Optional[MonsterFamilyRead] - - -class MonsterFamilyReadWithMonsterDetail(MonsterFamilyRead): - monsters: List[MonsterDetailRead] = [] - - -class MonsterBreedingLinkBase(SQLModel): - child_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") - pedigree_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") - parent2_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") - pedigree_family_id: Optional[int] = Field( - default=None, foreign_key="monsterfamily.id" - ) - family2_id: Optional[int] = Field(default=None, foreign_key="monsterfamily.id") - - -class MonsterBreedingLink(MonsterBreedingLinkBase, table=True): - """ - many-to-many association table between MonsterDetail and MonsterFamily - that represents breeding combinations. - - child_id, pedigree, and parent_2 represent individual monster ids. - pedigree_family and family_2 represent family type. - - In order to make new monster, two parents are required. - - 4 different combinations possible: - pedigree + parent_2 -- specific monster + specific monster - pedigree + family_2 -- specific monster + any monster from the family type - pedigree_family + parent_2 -- specific family type + specific monster - pedigree_family + family_2 -- family + different family type - """ - - id: Optional[int] = Field(default=None, primary_key=True) - child: "MonsterDetail" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.child_id==MonsterDetail.id", - "lazy": "joined", - } - ) - pedigree: "MonsterDetail" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.pedigree_id==MonsterDetail.id", - "lazy": "joined", - } - ) - parent2: "MonsterDetail" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.parent2_id==MonsterDetail.id", - "lazy": "joined", - } - ) - pedigree_family: "MonsterFamily" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.pedigree_family_id" - "==MonsterFamily.id", - "lazy": "joined", - } - ) - family2: "MonsterFamily" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.family2_id==MonsterFamily.id", - "lazy": "joined", - } - ) - - -class MonsterBreedingLinkRead(MonsterBreedingLinkBase): - id: int - - -class MonsterBreedingLinkReadWithInfo(MonsterBreedingLinkRead): - child: Optional[MonsterDetailRead] - pedigree: Optional[MonsterDetailRead] - parent2: Optional[MonsterDetailRead] - pedigree_family: Optional[MonsterFamilyRead] - family2: Optional[MonsterFamilyRead] - - -class SkillBase(SQLModel): - """ - Shows description, MP cost, and required stats to learn skill. - Each monster naturally learns 3 skills. - """ - - category_type: str - family_type: str - new_name: Optional[str] = Field(default=None) - old_name: str - description: str - mp_cost: int - required_level: int - required_hp: Optional[int] = None - required_mp: Optional[int] = None - required_attack: Optional[int] = None - required_defense: Optional[int] = None - required_speed: Optional[int] = None - required_intelligence: Optional[int] = None - - -class Skill(SkillBase, table=True): - id: Optional[int] = Field(default=None, primary_key=True) - - upgrade_to_id: Optional[int] = Field( - foreign_key="skill.id", # lowercase refers to database table name - default=None, - ) - upgrade_to: Optional["Skill"] = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "Skill.upgrade_to_id==Skill.id", - "lazy": "joined", - "remote_side": "Skill.id", # uppercase refers to this Skill class - } - ) - - upgrade_from_id: Optional[int] = Field( - foreign_key="skill.id", - default=None, - ) - upgrade_from: Optional["Skill"] = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "Skill.upgrade_from_id==Skill.id", - "lazy": "joined", - "remote_side": "Skill.id", - } - ) - - monsters: List[MonsterDetail] = Relationship( - back_populates="skills", link_model=MonsterSkillLink - ) - - -class SkillRead(SkillBase): - id: int - - -class SkillReadWithMonster(SkillRead): - monsters: Optional[MonsterDetailRead] - - -class SkillUpgradeRead(SkillRead): - upgrade_to: Optional[Skill] - upgrade_from: Optional[Skill] - - -class MonsterDetailSkill(MonsterDetailWithFamily): - skills: List[SkillRead] = [] - - -class SkillCombineBase(SQLModel): - combo_skill_id: Optional[int] = Field(default=None, foreign_key="skill.id") - needed_skill_id: Optional[int] = Field(default=None, foreign_key="skill.id") - - -class SkillCombine(SkillCombineBase, table=True): - """ - many-to-many association table showing certain needed skills combine to - learn new combo skill. - """ - - id: Optional[int] = Field(default=None, primary_key=True) - - combo_skill: Skill = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "SkillCombine.combo_skill_id==Skill.id", - "lazy": "joined", - } - ) - - needed_skill: Skill = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "SkillCombine.needed_skill_id==Skill.id", - "lazy": "joined", - } - ) - - -class SkillCombineRead(SkillCombineBase): - id: int - needed_skill: Optional[SkillRead] - - -class Item(SQLModel, table=True): - """ - Lists all items sold in shops and found in the field - """ - - id: Optional[int] = Field(default=None, primary_key=True) - item_name: str - item_category: str - item_description: str - price: Optional[int] = Field(default=None) - sell_price: Optional[int] = Field(default=None) - sell_location: str +from typing import List, Optional, TYPE_CHECKING + +from sqlmodel import Field, Relationship, SQLModel + +if TYPE_CHECKING: + from .skill import Skill + + +class MonsterSkillLink(SQLModel, table=True): + """ + many-to-many association table linking a monster to three different skills. + """ + + id: Optional[int] = Field(default=None, primary_key=True) + monster_id: Optional[int] = Field( + default=None, + foreign_key="monsterdetail.id", + ) + skill_id: Optional[int] = Field( + default=None, + foreign_key="skill.id", + ) + + +class MonsterDetailBase(SQLModel): + """ + Monster details from in-game bestiary. Shows name, family, and description. + """ + + new_name: str + old_name: str + description: str + + # one-to-many relation where a family is linked to many monsters + family_id: int = Field(foreign_key="monsterfamily.id") + + +class MonsterDetail(MonsterDetailBase, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + + family: List["MonsterFamily"] = Relationship(back_populates="monsters") + skills: List["Skill"] = Relationship( + back_populates="monsters", link_model=MonsterSkillLink + ) + + +class MonsterDetailRead(MonsterDetailBase): + id: int + + +class MonsterFamilyBase(SQLModel): + """ + There are 10 monster families in the game. + """ + + family_eng: str + + +class MonsterFamily(MonsterFamilyBase, table=True): + """ + one-to-many relation between family and monsters. + """ + + id: Optional[int] = Field(default=None, primary_key=True) + monsters: List[MonsterDetail] = Relationship(back_populates="family") + + +class MonsterFamilyRead(MonsterFamilyBase): + id: int + + +class MonsterDetailWithFamily(MonsterDetailRead): + family: Optional[MonsterFamilyRead] + + +class MonsterFamilyReadWithMonsterDetail(MonsterFamilyRead): + monsters: List[MonsterDetailRead] = [] + + +class MonsterBreedingLinkBase(SQLModel): + child_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") + pedigree_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") + parent2_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") + pedigree_family_id: Optional[int] = Field( + default=None, foreign_key="monsterfamily.id" + ) + family2_id: Optional[int] = Field(default=None, foreign_key="monsterfamily.id") + + +class MonsterBreedingLink(MonsterBreedingLinkBase, table=True): + """ + many-to-many association table between MonsterDetail and MonsterFamily + that represents breeding combinations. + + child_id, pedigree, and parent_2 represent individual monster ids. + pedigree_family and family_2 represent family type. + + In order to make new monster, two parents are required. + + 4 different combinations possible: + pedigree + parent_2 -- specific monster + specific monster + pedigree + family_2 -- specific monster + any monster from the family type + pedigree_family + parent_2 -- specific family type + specific monster + pedigree_family + family_2 -- family + different family type + """ + + id: Optional[int] = Field(default=None, primary_key=True) + child: "MonsterDetail" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.child_id==MonsterDetail.id", + "lazy": "joined", + } + ) + pedigree: "MonsterDetail" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.pedigree_id==MonsterDetail.id", + "lazy": "joined", + } + ) + parent2: "MonsterDetail" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.parent2_id==MonsterDetail.id", + "lazy": "joined", + } + ) + pedigree_family: "MonsterFamily" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.pedigree_family_id" + "==MonsterFamily.id", + "lazy": "joined", + } + ) + family2: "MonsterFamily" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.family2_id==MonsterFamily.id", + "lazy": "joined", + } + ) + + +class MonsterBreedingLinkRead(MonsterBreedingLinkBase): + id: int + + +class MonsterBreedingLinkReadWithInfo(MonsterBreedingLinkRead): + child: Optional[MonsterDetailRead] + pedigree: Optional[MonsterDetailRead] + parent2: Optional[MonsterDetailRead] + pedigree_family: Optional[MonsterFamilyRead] + family2: Optional[MonsterFamilyRead] diff --git a/src/app/models/dqm1/skill.py b/src/app/models/dqm1/skill.py new file mode 100644 index 0000000..0d92333 --- /dev/null +++ b/src/app/models/dqm1/skill.py @@ -0,0 +1,120 @@ +from typing import List, Optional, TYPE_CHECKING + +from sqlmodel import Field, Relationship, SQLModel +from .monster import ( + MonsterDetail, + MonsterSkillLink, + MonsterDetailRead, + MonsterDetailWithFamily, +) + +if TYPE_CHECKING: + from .monster import ( + MonsterDetail, + MonsterSkillLink, + MonsterDetailRead, + MonsterDetailWithFamily, + ) + + +class SkillBase(SQLModel): + """ + Shows description, MP cost, and required stats to learn skill. + Each monster naturally learns 3 skills. + """ + + category_type: str + family_type: str + new_name: Optional[str] = Field(default=None) + old_name: str + description: str + mp_cost: int + required_level: int + required_hp: Optional[int] = None + required_mp: Optional[int] = None + required_attack: Optional[int] = None + required_defense: Optional[int] = None + required_speed: Optional[int] = None + required_intelligence: Optional[int] = None + + +class Skill(SkillBase, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + + upgrade_to_id: Optional[int] = Field( + foreign_key="skill.id", # lowercase refers to database table name + default=None, + ) + upgrade_to: Optional["Skill"] = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "Skill.upgrade_to_id==Skill.id", + "lazy": "joined", + "remote_side": "Skill.id", # uppercase refers to this Skill class + } + ) + + upgrade_from_id: Optional[int] = Field( + foreign_key="skill.id", + default=None, + ) + upgrade_from: Optional["Skill"] = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "Skill.upgrade_from_id==Skill.id", + "lazy": "joined", + "remote_side": "Skill.id", + } + ) + + monsters: List["MonsterDetail"] = Relationship( + back_populates="skills", link_model=MonsterSkillLink + ) + + +class SkillRead(SkillBase): + id: int + + +class SkillReadWithMonster(SkillRead): + monsters: Optional[MonsterDetailRead] + + +class SkillUpgradeRead(SkillRead): + upgrade_to: Optional[Skill] + upgrade_from: Optional[Skill] + + +class MonsterDetailSkill(MonsterDetailWithFamily): + skills: List[SkillRead] = [] + + +class SkillCombineBase(SQLModel): + combo_skill_id: Optional[int] = Field(default=None, foreign_key="skill.id") + needed_skill_id: Optional[int] = Field(default=None, foreign_key="skill.id") + + +class SkillCombine(SkillCombineBase, table=True): + """ + many-to-many association table showing certain needed skills combine to + learn new combo skill. + """ + + id: Optional[int] = Field(default=None, primary_key=True) + + combo_skill: Skill = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "SkillCombine.combo_skill_id==Skill.id", + "lazy": "joined", + } + ) + + needed_skill: Skill = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "SkillCombine.needed_skill_id==Skill.id", + "lazy": "joined", + } + ) + + +class SkillCombineRead(SkillCombineBase): + id: int + needed_skill: Optional[SkillRead] From 8e231136b6c94e55efe5c433096b0efe2aa563f7 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 1 Jul 2025 17:01:35 -0700 Subject: [PATCH 14/27] refactor: change model imports --- src/app/routers/dqm1_endpoints.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index bc6fbd8..4346b6e 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -10,15 +10,17 @@ SkillCategory, SkillFamily, ) -from src.app.models import ( - Item, +from src.app.models.dqm1.item import Item +from src.app.models.dqm1.monster import ( MonsterBreedingLink, MonsterBreedingLinkReadWithInfo, MonsterDetail, MonsterDetailWithFamily, - MonsterDetailSkill, MonsterFamily, MonsterFamilyReadWithMonsterDetail, +) +from src.app.models.dqm1.skill import ( + MonsterDetailSkill, Skill, SkillCombine, SkillCombineRead, From d32fc63070ed453ec0cc981e341f1c31be6acedd Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 1 Jul 2025 17:04:41 -0700 Subject: [PATCH 15/27] refactor: change model imports in create_database.py --- src/app/create_database.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/app/create_database.py b/src/app/create_database.py index 06b44ae..835e3cf 100644 --- a/src/app/create_database.py +++ b/src/app/create_database.py @@ -5,16 +5,19 @@ from sqlalchemy.exc import IntegrityError from src.app.database import create_db_and_tables, engine -from src.app.models import ( - Item, +from src.app.models.dqm1.item import Item +from src.app.models.dqm1.monster import ( MonsterBreedingLink, MonsterDetail, MonsterFamily, MonsterSkillLink, +) +from src.app.models.dqm1.skill import ( Skill, SkillCombine, ) + current_dir = Path(__file__).resolve().parent csv_dir = current_dir.parent / "csv_files" From b8c7d2b2ef5d355b05e46f1e3c56b5171e80d0c4 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 1 Jul 2025 17:06:01 -0700 Subject: [PATCH 16/27] refactor: change model imports in create_database.py --- src/app/create_database.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/app/create_database.py b/src/app/create_database.py index 835e3cf..aa7eb85 100644 --- a/src/app/create_database.py +++ b/src/app/create_database.py @@ -12,10 +12,7 @@ MonsterFamily, MonsterSkillLink, ) -from src.app.models.dqm1.skill import ( - Skill, - SkillCombine, -) +from src.app.models.dqm1.skill import Skill, SkillCombine current_dir = Path(__file__).resolve().parent From 8f1054672c28757a45aac5ca8ac2ae8337042984 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 1 Jul 2025 17:36:40 -0700 Subject: [PATCH 17/27] refactor: change model import statements for conftest.py --- tests/conftest.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 1c158be..8b0b659 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,16 +6,16 @@ from sqlmodel import Session, SQLModel, create_engine from sqlmodel.pool import StaticPool -from src.app.main import app, get_session -from src.app.models import ( - Item, +from src.app.database import get_session +from src.app.main import app +from src.app.models.dqm1.item import Item +from src.app.models.dqm1.monster import ( MonsterBreedingLink, MonsterDetail, MonsterFamily, MonsterSkillLink, - Skill, - SkillCombine, ) +from src.app.models.dqm1.skill import Skill, SkillCombine @pytest.fixture(name="session") From 9836f2ad3e58f51ba374a8b07b4771282583122e Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 1 Jul 2025 17:37:16 -0700 Subject: [PATCH 18/27] refactor: change model import statements for test_insert_data.py --- tests/test_insert_data.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/test_insert_data.py b/tests/test_insert_data.py index 5169a8c..db1ebb0 100644 --- a/tests/test_insert_data.py +++ b/tests/test_insert_data.py @@ -1,15 +1,14 @@ from fastapi.testclient import TestClient from sqlmodel import Session -from src.app.models import ( - Item, +from src.app.models.dqm1.item import Item +from src.app.models.dqm1.monster import ( MonsterBreedingLink, MonsterDetail, MonsterFamily, MonsterSkillLink, - Skill, - SkillCombine, ) +from src.app.models.dqm1.skill import Skill, SkillCombine def test_read_root(client: TestClient): From e014502d9c5e6c320ede7e55dc35e607c811a613 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 1 Jul 2025 17:55:16 -0700 Subject: [PATCH 19/27] refactor: Moved models_enums.py to src/app/models/dqm1 directory --- src/app/{model_enums.py => models/dqm1/enums.py} | 0 src/app/routers/dqm1_endpoints.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/app/{model_enums.py => models/dqm1/enums.py} (100%) diff --git a/src/app/model_enums.py b/src/app/models/dqm1/enums.py similarity index 100% rename from src/app/model_enums.py rename to src/app/models/dqm1/enums.py diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index 4346b6e..70fa1df 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -4,7 +4,7 @@ from sqlmodel import Session, select from src.app.database import get_session -from src.app.model_enums import ( +from src.app.models.dqm1.enums import ( ItemCategory, ItemSellLocation, SkillCategory, From 4b6c46648bd0dc986a2511b4561b7e7301e24c77 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Thu, 3 Jul 2025 17:32:36 -0700 Subject: [PATCH 20/27] refactor(family model): Moved MonsterFamily models to separate file - MonsterFamily related models in src/app/models/dqm1/models/monster.py moved to separate file within the same directory --- src/app/models/dqm1/monster.py | 276 ++++++++++++-------------- src/app/models/dqm1/monster_family.py | 31 +++ 2 files changed, 157 insertions(+), 150 deletions(-) create mode 100644 src/app/models/dqm1/monster_family.py diff --git a/src/app/models/dqm1/monster.py b/src/app/models/dqm1/monster.py index 1666b7a..d75bdbc 100644 --- a/src/app/models/dqm1/monster.py +++ b/src/app/models/dqm1/monster.py @@ -1,150 +1,126 @@ -from typing import List, Optional, TYPE_CHECKING - -from sqlmodel import Field, Relationship, SQLModel - -if TYPE_CHECKING: - from .skill import Skill - - -class MonsterSkillLink(SQLModel, table=True): - """ - many-to-many association table linking a monster to three different skills. - """ - - id: Optional[int] = Field(default=None, primary_key=True) - monster_id: Optional[int] = Field( - default=None, - foreign_key="monsterdetail.id", - ) - skill_id: Optional[int] = Field( - default=None, - foreign_key="skill.id", - ) - - -class MonsterDetailBase(SQLModel): - """ - Monster details from in-game bestiary. Shows name, family, and description. - """ - - new_name: str - old_name: str - description: str - - # one-to-many relation where a family is linked to many monsters - family_id: int = Field(foreign_key="monsterfamily.id") - - -class MonsterDetail(MonsterDetailBase, table=True): - id: Optional[int] = Field(default=None, primary_key=True) - - family: List["MonsterFamily"] = Relationship(back_populates="monsters") - skills: List["Skill"] = Relationship( - back_populates="monsters", link_model=MonsterSkillLink - ) - - -class MonsterDetailRead(MonsterDetailBase): - id: int - - -class MonsterFamilyBase(SQLModel): - """ - There are 10 monster families in the game. - """ - - family_eng: str - - -class MonsterFamily(MonsterFamilyBase, table=True): - """ - one-to-many relation between family and monsters. - """ - - id: Optional[int] = Field(default=None, primary_key=True) - monsters: List[MonsterDetail] = Relationship(back_populates="family") - - -class MonsterFamilyRead(MonsterFamilyBase): - id: int - - -class MonsterDetailWithFamily(MonsterDetailRead): - family: Optional[MonsterFamilyRead] - - -class MonsterFamilyReadWithMonsterDetail(MonsterFamilyRead): - monsters: List[MonsterDetailRead] = [] - - -class MonsterBreedingLinkBase(SQLModel): - child_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") - pedigree_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") - parent2_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") - pedigree_family_id: Optional[int] = Field( - default=None, foreign_key="monsterfamily.id" - ) - family2_id: Optional[int] = Field(default=None, foreign_key="monsterfamily.id") - - -class MonsterBreedingLink(MonsterBreedingLinkBase, table=True): - """ - many-to-many association table between MonsterDetail and MonsterFamily - that represents breeding combinations. - - child_id, pedigree, and parent_2 represent individual monster ids. - pedigree_family and family_2 represent family type. - - In order to make new monster, two parents are required. - - 4 different combinations possible: - pedigree + parent_2 -- specific monster + specific monster - pedigree + family_2 -- specific monster + any monster from the family type - pedigree_family + parent_2 -- specific family type + specific monster - pedigree_family + family_2 -- family + different family type - """ - - id: Optional[int] = Field(default=None, primary_key=True) - child: "MonsterDetail" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.child_id==MonsterDetail.id", - "lazy": "joined", - } - ) - pedigree: "MonsterDetail" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.pedigree_id==MonsterDetail.id", - "lazy": "joined", - } - ) - parent2: "MonsterDetail" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.parent2_id==MonsterDetail.id", - "lazy": "joined", - } - ) - pedigree_family: "MonsterFamily" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.pedigree_family_id" - "==MonsterFamily.id", - "lazy": "joined", - } - ) - family2: "MonsterFamily" = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "MonsterBreedingLink.family2_id==MonsterFamily.id", - "lazy": "joined", - } - ) - - -class MonsterBreedingLinkRead(MonsterBreedingLinkBase): - id: int - - -class MonsterBreedingLinkReadWithInfo(MonsterBreedingLinkRead): - child: Optional[MonsterDetailRead] - pedigree: Optional[MonsterDetailRead] - parent2: Optional[MonsterDetailRead] - pedigree_family: Optional[MonsterFamilyRead] - family2: Optional[MonsterFamilyRead] +from typing import List, Optional, TYPE_CHECKING + +from sqlmodel import Field, Relationship, SQLModel + +if TYPE_CHECKING: + from .skill import Skill + from .monster_family import MonsterFamily, MonsterFamilyRead + + +class MonsterSkillLink(SQLModel, table=True): + """ + many-to-many association table linking a monster to three different skills. + """ + + id: Optional[int] = Field(default=None, primary_key=True) + monster_id: Optional[int] = Field( + default=None, + foreign_key="monsterdetail.id", + ) + skill_id: Optional[int] = Field( + default=None, + foreign_key="skill.id", + ) + + +class MonsterDetailBase(SQLModel): + """ + Monster details from in-game bestiary. Shows name, family, and description. + """ + + new_name: str + old_name: str + description: str + + # one-to-many relation where a family is linked to many monsters + family_id: int = Field(foreign_key="monsterfamily.id") + + +class MonsterDetail(MonsterDetailBase, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + + family: List["MonsterFamily"] = Relationship(back_populates="monsters") + skills: List["Skill"] = Relationship( + back_populates="monsters", link_model=MonsterSkillLink + ) + + +class MonsterDetailRead(MonsterDetailBase): + id: int + + +class MonsterDetailWithFamily(MonsterDetailRead): + family: Optional[MonsterFamilyRead] + + +class MonsterBreedingLinkBase(SQLModel): + child_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") + pedigree_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") + parent2_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") + pedigree_family_id: Optional[int] = Field( + default=None, foreign_key="monsterfamily.id" + ) + family2_id: Optional[int] = Field(default=None, foreign_key="monsterfamily.id") + + +class MonsterBreedingLink(MonsterBreedingLinkBase, table=True): + """ + many-to-many association table between MonsterDetail and MonsterFamily + that represents breeding combinations. + + child_id, pedigree, and parent_2 represent individual monster ids. + pedigree_family and family_2 represent family type. + + In order to make new monster, two parents are required. + + 4 different combinations possible: + pedigree + parent_2 -- specific monster + specific monster + pedigree + family_2 -- specific monster + any monster from the family type + pedigree_family + parent_2 -- specific family type + specific monster + pedigree_family + family_2 -- family + different family type + """ + + id: Optional[int] = Field(default=None, primary_key=True) + child: "MonsterDetail" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.child_id==MonsterDetail.id", + "lazy": "joined", + } + ) + pedigree: "MonsterDetail" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.pedigree_id==MonsterDetail.id", + "lazy": "joined", + } + ) + parent2: "MonsterDetail" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.parent2_id==MonsterDetail.id", + "lazy": "joined", + } + ) + pedigree_family: "MonsterFamily" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.pedigree_family_id" + "==MonsterFamily.id", + "lazy": "joined", + } + ) + family2: "MonsterFamily" = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "MonsterBreedingLink.family2_id==MonsterFamily.id", + "lazy": "joined", + } + ) + + +class MonsterBreedingLinkRead(MonsterBreedingLinkBase): + id: int + + +class MonsterBreedingLinkReadWithInfo(MonsterBreedingLinkRead): + child: Optional[MonsterDetailRead] + pedigree: Optional[MonsterDetailRead] + parent2: Optional[MonsterDetailRead] + pedigree_family: Optional[MonsterFamilyRead] + family2: Optional[MonsterFamilyRead] diff --git a/src/app/models/dqm1/monster_family.py b/src/app/models/dqm1/monster_family.py new file mode 100644 index 0000000..b52805d --- /dev/null +++ b/src/app/models/dqm1/monster_family.py @@ -0,0 +1,31 @@ +from typing import List, Optional, TYPE_CHECKING + +from sqlmodel import Field, Relationship, SQLModel + +if TYPE_CHECKING: + from .monster import MonsterDetail, MonsterDetailRead + + +class MonsterFamilyBase(SQLModel): + """ + There are 10 monster families in the game. + """ + + family_eng: str + + +class MonsterFamily(MonsterFamilyBase, table=True): + """ + one-to-many relation between family and monsters. + """ + + id: Optional[int] = Field(default=None, primary_key=True) + monsters: List["MonsterDetail"] = Relationship(back_populates="family") + + +class MonsterFamilyRead(MonsterFamilyBase): + id: int + + +class MonsterFamilyReadWithMonsterDetail(MonsterFamilyRead): + monsters: List["MonsterDetailRead"] = [] From 896bd2d8dbf658a4b4302466a970b951b6ae6394 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Thu, 3 Jul 2025 17:35:05 -0700 Subject: [PATCH 21/27] Update MonsterFamily import statements across all files --- src/app/create_database.py | 184 ++--- src/app/routers/dqm1_endpoints.py | 346 ++++----- tests/conftest.py | 194 ++--- tests/test_insert_data.py | 1168 ++++++++++++++--------------- 4 files changed, 947 insertions(+), 945 deletions(-) diff --git a/src/app/create_database.py b/src/app/create_database.py index aa7eb85..0e6723b 100644 --- a/src/app/create_database.py +++ b/src/app/create_database.py @@ -1,92 +1,92 @@ -import csv -from pathlib import Path - -from sqlmodel import Session, select -from sqlalchemy.exc import IntegrityError - -from src.app.database import create_db_and_tables, engine -from src.app.models.dqm1.item import Item -from src.app.models.dqm1.monster import ( - MonsterBreedingLink, - MonsterDetail, - MonsterFamily, - MonsterSkillLink, -) -from src.app.models.dqm1.skill import Skill, SkillCombine - - -current_dir = Path(__file__).resolve().parent -csv_dir = current_dir.parent / "csv_files" - - -def _insert_data(csv_file, Model): - """ - helper function that uses dictionary unpacking to add csv file data - into database - """ - with Session(engine) as session: - with open(csv_file, encoding="utf-8-sig") as f: - reader = csv.DictReader(f) - for row in reader: - # replace empty string with None - row = {k: (None if v == "" else v) for k, v in row.items()} - if "id" in row: - existing_entry = session.exec( - select(Model).where(Model.id == row["id"]) - ).first() - - if existing_entry: - print( - f"Entry with id {row['id']} already exists. Skipping insertion." - ) - continue - try: - session.add(Model(**row)) - except IntegrityError as e: - session.rollback() - print(f"IntegrityError has occurred: {e.orig}") - - session.commit() - - -def create_item_csv(): - _insert_data(csv_dir / "DQM1_items.csv", Item) - - -def create_monster_family_csv(): - _insert_data(csv_dir / "DQM1_monster_family.csv", MonsterFamily) - - -def create_skill_csv(): - _insert_data(csv_dir / "DQM1_skills.csv", Skill) - - -def create_skillcombo_csv(): - _insert_data(csv_dir / "DQM1_skill_combo.csv", SkillCombine) - - -def create_monster_detail_csv(): - _insert_data(csv_dir / "DQM1_monsterdetails.csv", MonsterDetail) - - -def create_breed_combo(): - _insert_data(csv_dir / "DQM1_breeding_combo.csv", MonsterBreedingLink) - - -def create_monster_skill_link(): - _insert_data(csv_dir / "DQM1_monster_skill_link.csv", MonsterSkillLink) - - -def load_all_csv_data(): - create_db_and_tables() - create_item_csv() - create_monster_family_csv() - create_skill_csv() - create_skillcombo_csv() - create_monster_detail_csv() - create_breed_combo() - create_monster_skill_link() - - -if __name__ == "__main__": - load_all_csv_data() +import csv +from pathlib import Path + +from sqlmodel import Session, select +from sqlalchemy.exc import IntegrityError + +from src.app.database import create_db_and_tables, engine +from src.app.models.dqm1.item import Item +from src.app.models.dqm1.monster import ( + MonsterBreedingLink, + MonsterDetail, + MonsterSkillLink, +) +from src.app.models.dqm1.monster_family import MonsterFamily +from src.app.models.dqm1.skill import Skill, SkillCombine + + +current_dir = Path(__file__).resolve().parent +csv_dir = current_dir.parent / "csv_files" + + +def _insert_data(csv_file, Model): + """ + helper function that uses dictionary unpacking to add csv file data + into database + """ + with Session(engine) as session: + with open(csv_file, encoding="utf-8-sig") as f: + reader = csv.DictReader(f) + for row in reader: + # replace empty string with None + row = {k: (None if v == "" else v) for k, v in row.items()} + if "id" in row: + existing_entry = session.exec( + select(Model).where(Model.id == row["id"]) + ).first() + + if existing_entry: + print( + f"Entry with id {row['id']} already exists. Skipping insertion." + ) + continue + try: + session.add(Model(**row)) + except IntegrityError as e: + session.rollback() + print(f"IntegrityError has occurred: {e.orig}") + + session.commit() + + +def create_item_csv(): + _insert_data(csv_dir / "DQM1_items.csv", Item) + + +def create_monster_family_csv(): + _insert_data(csv_dir / "DQM1_monster_family.csv", MonsterFamily) + + +def create_skill_csv(): + _insert_data(csv_dir / "DQM1_skills.csv", Skill) + + +def create_skillcombo_csv(): + _insert_data(csv_dir / "DQM1_skill_combo.csv", SkillCombine) + + +def create_monster_detail_csv(): + _insert_data(csv_dir / "DQM1_monsterdetails.csv", MonsterDetail) + + +def create_breed_combo(): + _insert_data(csv_dir / "DQM1_breeding_combo.csv", MonsterBreedingLink) + + +def create_monster_skill_link(): + _insert_data(csv_dir / "DQM1_monster_skill_link.csv", MonsterSkillLink) + + +def load_all_csv_data(): + create_db_and_tables() + create_item_csv() + create_monster_family_csv() + create_skill_csv() + create_skillcombo_csv() + create_monster_detail_csv() + create_breed_combo() + create_monster_skill_link() + + +if __name__ == "__main__": + load_all_csv_data() diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index 70fa1df..88420ab 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -1,172 +1,174 @@ -from typing import List, Optional - -from fastapi import APIRouter, Depends, HTTPException -from sqlmodel import Session, select - -from src.app.database import get_session -from src.app.models.dqm1.enums import ( - ItemCategory, - ItemSellLocation, - SkillCategory, - SkillFamily, -) -from src.app.models.dqm1.item import Item -from src.app.models.dqm1.monster import ( - MonsterBreedingLink, - MonsterBreedingLinkReadWithInfo, - MonsterDetail, - MonsterDetailWithFamily, - MonsterFamily, - MonsterFamilyReadWithMonsterDetail, -) -from src.app.models.dqm1.skill import ( - MonsterDetailSkill, - Skill, - SkillCombine, - SkillCombineRead, - SkillUpgradeRead, -) - -router = APIRouter( - prefix="/dqm1", -) - - -@router.get( - "/monsters", - response_model=List[MonsterDetailWithFamily], - tags=["dqm1 monsters"], -) -async def read_monsters( - *, session: Session = Depends(get_session), family: Optional[int] = None -): - """ - **Parameter Descriptions**
- **new_name** : updated name used in later Dragon Quest games
- **old_name** : name used in the game
- **description** : in game beastiary description
- **family** : a monster is part of one of 10 different monster families
- """ - monsters = select(MonsterDetail) - if family: - monsters = monsters.where(MonsterDetail.family_id == family) - monsters_result = session.exec(monsters).all() - return monsters_result - - -@router.get( - "/monsters/{monster_id}", - response_model=MonsterDetailWithFamily, - tags=["dqm1 monsters"], -) -async def read_monster(*, session: Session = Depends(get_session), monster_id: int): - monster = session.get(MonsterDetail, monster_id) - if not monster: - raise HTTPException(status_code=404, detail="Monster not found") - return monster - - -@router.get( - "/monstersandskill/{monster_id}", - response_model=MonsterDetailSkill, - tags=["dqm1 monsters"], -) -async def read_monster_skill( - *, session: Session = Depends(get_session), monster_id: int -): - monster = session.get(MonsterDetail, monster_id) - if not monster: - raise HTTPException(status_code=404, detail="Monster not found") - return monster - - -@router.get( - "/family/{family_id}", - response_model=MonsterFamilyReadWithMonsterDetail, - tags=["dqm1 monsters"], -) -async def read_family(*, session: Session = Depends(get_session), family_id: int): - family = session.get(MonsterFamily, family_id) - if not family: - raise HTTPException(status_code=404, detail="Family not found") - return family - - -@router.get("/skills", tags=["dqm1 skills"]) -async def read_skills( - *, - session: Session = Depends(get_session), - category: Optional[SkillCategory] = None, - skill_family: Optional[SkillFamily] = None, -): - skills = select(Skill) - if category: - skills = skills.where(Skill.category_type == category) - if skill_family: - skills = skills.where(Skill.family_type == skill_family) - skills_result = session.exec(skills).all() - return skills_result - - -@router.get("/skills/{skill_id}", response_model=SkillUpgradeRead, tags=["dqm1 skills"]) -async def read_skill(*, session: Session = Depends(get_session), skill_id: int): - skill = session.get(Skill, skill_id) - if not skill: - raise HTTPException(status_code=404, detail="Skill not found") - return skill - - -@router.get( - "/skillcombine/{skill_id}", - response_model=List[SkillCombineRead], - tags=["dqm1 skills"], -) -async def get_skill_combo(*, session: Session = Depends(get_session), skill_id: int): - query = select(SkillCombine).where(SkillCombine.combo_skill_id == skill_id) - skill = session.exec(query).all() - return skill - - -@router.get("/items", tags=["dqm1 items"]) -async def read_items( - *, - session: Session = Depends(get_session), - category: Optional[ItemCategory] = None, - selllocation: Optional[ItemSellLocation] = None, -): - items = select(Item) - if category: - items = items.where(Item.item_category == category) - if selllocation: - items = items.where(Item.sell_location == selllocation) - items_result = session.exec(items).all() - return items_result - - -@router.get("/items/{item_id}", tags=["dqm1 items"]) -async def read_item(*, session: Session = Depends(get_session), item_id: int): - item = session.get(Item, item_id) - if not item: - raise HTTPException(status_code=404, detail="Item not found") - return item - - -@router.get( - "/breeding/{monster_id}", - response_model=List[MonsterBreedingLinkReadWithInfo], - tags=["dqm1 monsters"], -) -async def get_breeding_combos( - *, session: Session = Depends(get_session), monster_id: int -): - """ - Given a monster_id, finds all breeding combination that results in - the target monster or uses the target monster as a parent - """ - query = select(MonsterBreedingLink).where( - (MonsterBreedingLink.child_id == monster_id) - | (MonsterBreedingLink.pedigree_id == monster_id) - | (MonsterBreedingLink.parent2_id == monster_id) - ) - breeding_combos = session.exec(query).all() - return breeding_combos +from typing import List, Optional + +from fastapi import APIRouter, Depends, HTTPException +from sqlmodel import Session, select + +from src.app.database import get_session +from src.app.models.dqm1.enums import ( + ItemCategory, + ItemSellLocation, + SkillCategory, + SkillFamily, +) +from src.app.models.dqm1.item import Item +from src.app.models.dqm1.monster import ( + MonsterBreedingLink, + MonsterBreedingLinkReadWithInfo, + MonsterDetail, + MonsterDetailWithFamily, +) +from src.app.models.dqm1.monster_family import ( + MonsterFamily, + MonsterFamilyReadWithMonsterDetail, +) +from src.app.models.dqm1.skill import ( + MonsterDetailSkill, + Skill, + SkillCombine, + SkillCombineRead, + SkillUpgradeRead, +) + +router = APIRouter( + prefix="/dqm1", +) + + +@router.get( + "/monsters", + response_model=List[MonsterDetailWithFamily], + tags=["dqm1 monsters"], +) +async def read_monsters( + *, session: Session = Depends(get_session), family: Optional[int] = None +): + """ + **Parameter Descriptions**
+ **new_name** : updated name used in later Dragon Quest games
+ **old_name** : name used in the game
+ **description** : in game beastiary description
+ **family** : a monster is part of one of 10 different monster families
+ """ + monsters = select(MonsterDetail) + if family: + monsters = monsters.where(MonsterDetail.family_id == family) + monsters_result = session.exec(monsters).all() + return monsters_result + + +@router.get( + "/monsters/{monster_id}", + response_model=MonsterDetailWithFamily, + tags=["dqm1 monsters"], +) +async def read_monster(*, session: Session = Depends(get_session), monster_id: int): + monster = session.get(MonsterDetail, monster_id) + if not monster: + raise HTTPException(status_code=404, detail="Monster not found") + return monster + + +@router.get( + "/monstersandskill/{monster_id}", + response_model=MonsterDetailSkill, + tags=["dqm1 monsters"], +) +async def read_monster_skill( + *, session: Session = Depends(get_session), monster_id: int +): + monster = session.get(MonsterDetail, monster_id) + if not monster: + raise HTTPException(status_code=404, detail="Monster not found") + return monster + + +@router.get( + "/family/{family_id}", + response_model=MonsterFamilyReadWithMonsterDetail, + tags=["dqm1 monsters"], +) +async def read_family(*, session: Session = Depends(get_session), family_id: int): + family = session.get(MonsterFamily, family_id) + if not family: + raise HTTPException(status_code=404, detail="Family not found") + return family + + +@router.get("/skills", tags=["dqm1 skills"]) +async def read_skills( + *, + session: Session = Depends(get_session), + category: Optional[SkillCategory] = None, + skill_family: Optional[SkillFamily] = None, +): + skills = select(Skill) + if category: + skills = skills.where(Skill.category_type == category) + if skill_family: + skills = skills.where(Skill.family_type == skill_family) + skills_result = session.exec(skills).all() + return skills_result + + +@router.get("/skills/{skill_id}", response_model=SkillUpgradeRead, tags=["dqm1 skills"]) +async def read_skill(*, session: Session = Depends(get_session), skill_id: int): + skill = session.get(Skill, skill_id) + if not skill: + raise HTTPException(status_code=404, detail="Skill not found") + return skill + + +@router.get( + "/skillcombine/{skill_id}", + response_model=List[SkillCombineRead], + tags=["dqm1 skills"], +) +async def get_skill_combo(*, session: Session = Depends(get_session), skill_id: int): + query = select(SkillCombine).where(SkillCombine.combo_skill_id == skill_id) + skill = session.exec(query).all() + return skill + + +@router.get("/items", tags=["dqm1 items"]) +async def read_items( + *, + session: Session = Depends(get_session), + category: Optional[ItemCategory] = None, + selllocation: Optional[ItemSellLocation] = None, +): + items = select(Item) + if category: + items = items.where(Item.item_category == category) + if selllocation: + items = items.where(Item.sell_location == selllocation) + items_result = session.exec(items).all() + return items_result + + +@router.get("/items/{item_id}", tags=["dqm1 items"]) +async def read_item(*, session: Session = Depends(get_session), item_id: int): + item = session.get(Item, item_id) + if not item: + raise HTTPException(status_code=404, detail="Item not found") + return item + + +@router.get( + "/breeding/{monster_id}", + response_model=List[MonsterBreedingLinkReadWithInfo], + tags=["dqm1 monsters"], +) +async def get_breeding_combos( + *, session: Session = Depends(get_session), monster_id: int +): + """ + Given a monster_id, finds all breeding combination that results in + the target monster or uses the target monster as a parent + """ + query = select(MonsterBreedingLink).where( + (MonsterBreedingLink.child_id == monster_id) + | (MonsterBreedingLink.pedigree_id == monster_id) + | (MonsterBreedingLink.parent2_id == monster_id) + ) + breeding_combos = session.exec(query).all() + return breeding_combos diff --git a/tests/conftest.py b/tests/conftest.py index 8b0b659..9435a91 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,97 +1,97 @@ -import csv -from pathlib import Path - -import pytest -from fastapi.testclient import TestClient -from sqlmodel import Session, SQLModel, create_engine -from sqlmodel.pool import StaticPool - -from src.app.database import get_session -from src.app.main import app -from src.app.models.dqm1.item import Item -from src.app.models.dqm1.monster import ( - MonsterBreedingLink, - MonsterDetail, - MonsterFamily, - MonsterSkillLink, -) -from src.app.models.dqm1.skill import Skill, SkillCombine - - -@pytest.fixture(name="session") -def session_fixture(): - test_engine = create_engine( - "sqlite://", - connect_args={"check_same_thread": False}, - poolclass=StaticPool, - ) - SQLModel.metadata.create_all(test_engine) - with Session(test_engine) as session: - yield session - - SQLModel.metadata.drop_all(test_engine) - - -@pytest.fixture(name="client") -def client_fixture(session: Session): - def get_session_override(): - yield session - - app.dependency_overrides[get_session] = get_session_override - - client = TestClient(app) - yield client - app.dependency_overrides.clear() - - -@pytest.fixture(name="session_module", scope="module") -def session_module(): - test_engine = create_engine( - "sqlite://", - connect_args={"check_same_thread": False}, - poolclass=StaticPool, - ) - SQLModel.metadata.create_all(test_engine) - with Session(test_engine) as session: - yield session - - SQLModel.metadata.drop_all(test_engine) - - -@pytest.fixture(name="client_module", scope="module") -def client_module(session_module: Session): - def get_session_override(): - yield session_module - - app.dependency_overrides[get_session] = get_session_override - - client = TestClient(app) - yield client - app.dependency_overrides.clear() - - -@pytest.fixture(name="load_all_csvdata", scope="module") -def load_csv_data(session_module: Session): - CSV_FILES_PATH = Path(__file__).resolve().parent.parent / "src" / "csv_files" - - csv_files = { - (CSV_FILES_PATH / "DQM1_items.csv", Item), - (CSV_FILES_PATH / "DQM1_monster_family.csv", MonsterFamily), - (CSV_FILES_PATH / "DQM1_skills.csv", Skill), - (CSV_FILES_PATH / "DQM1_skill_combo.csv", SkillCombine), - (CSV_FILES_PATH / "DQM1_monsterdetails.csv", MonsterDetail), - (CSV_FILES_PATH / "DQM1_breeding_combo.csv", MonsterBreedingLink), - (CSV_FILES_PATH / "DQM1_monster_skill_link.csv", MonsterSkillLink), - } - - for csvfile, Model in csv_files: - try: - with open(csvfile, encoding="utf-8-sig") as file: - reader = csv.DictReader(file) - for row in reader: - # replace empty string with None - row = {k: (None if v == "" else v) for k, v in row.items()} - session_module.add(Model(**row)) - session_module.commit() - except Exception as e: - print(f"Error loading {csvfile} : {e}") +import csv +from pathlib import Path + +import pytest +from fastapi.testclient import TestClient +from sqlmodel import Session, SQLModel, create_engine +from sqlmodel.pool import StaticPool + +from src.app.database import get_session +from src.app.main import app +from src.app.models.dqm1.item import Item +from src.app.models.dqm1.monster import ( + MonsterBreedingLink, + MonsterDetail, + MonsterSkillLink, +) +from src.app.models.dqm1.monster_family import MonsterFamily +from src.app.models.dqm1.skill import Skill, SkillCombine + + +@pytest.fixture(name="session") +def session_fixture(): + test_engine = create_engine( + "sqlite://", + connect_args={"check_same_thread": False}, + poolclass=StaticPool, + ) + SQLModel.metadata.create_all(test_engine) + with Session(test_engine) as session: + yield session + + SQLModel.metadata.drop_all(test_engine) + + +@pytest.fixture(name="client") +def client_fixture(session: Session): + def get_session_override(): + yield session + + app.dependency_overrides[get_session] = get_session_override + + client = TestClient(app) + yield client + app.dependency_overrides.clear() + + +@pytest.fixture(name="session_module", scope="module") +def session_module(): + test_engine = create_engine( + "sqlite://", + connect_args={"check_same_thread": False}, + poolclass=StaticPool, + ) + SQLModel.metadata.create_all(test_engine) + with Session(test_engine) as session: + yield session + + SQLModel.metadata.drop_all(test_engine) + + +@pytest.fixture(name="client_module", scope="module") +def client_module(session_module: Session): + def get_session_override(): + yield session_module + + app.dependency_overrides[get_session] = get_session_override + + client = TestClient(app) + yield client + app.dependency_overrides.clear() + + +@pytest.fixture(name="load_all_csvdata", scope="module") +def load_csv_data(session_module: Session): + CSV_FILES_PATH = Path(__file__).resolve().parent.parent / "src" / "csv_files" + + csv_files = { + (CSV_FILES_PATH / "DQM1_items.csv", Item), + (CSV_FILES_PATH / "DQM1_monster_family.csv", MonsterFamily), + (CSV_FILES_PATH / "DQM1_skills.csv", Skill), + (CSV_FILES_PATH / "DQM1_skill_combo.csv", SkillCombine), + (CSV_FILES_PATH / "DQM1_monsterdetails.csv", MonsterDetail), + (CSV_FILES_PATH / "DQM1_breeding_combo.csv", MonsterBreedingLink), + (CSV_FILES_PATH / "DQM1_monster_skill_link.csv", MonsterSkillLink), + } + + for csvfile, Model in csv_files: + try: + with open(csvfile, encoding="utf-8-sig") as file: + reader = csv.DictReader(file) + for row in reader: + # replace empty string with None + row = {k: (None if v == "" else v) for k, v in row.items()} + session_module.add(Model(**row)) + session_module.commit() + except Exception as e: + print(f"Error loading {csvfile} : {e}") diff --git a/tests/test_insert_data.py b/tests/test_insert_data.py index db1ebb0..35c4f2d 100644 --- a/tests/test_insert_data.py +++ b/tests/test_insert_data.py @@ -1,584 +1,584 @@ -from fastapi.testclient import TestClient -from sqlmodel import Session - -from src.app.models.dqm1.item import Item -from src.app.models.dqm1.monster import ( - MonsterBreedingLink, - MonsterDetail, - MonsterFamily, - MonsterSkillLink, -) -from src.app.models.dqm1.skill import Skill, SkillCombine - - -def test_read_root(client: TestClient): - response = client.get("/") - assert response.status_code == 200 - assert response.json() == { - "message": ("Welcome to the DQMonsters API. Go to the Swagger UI interface") - } - - -def test_insert_monster(client: TestClient, session: Session): - """ - - Tests individual insertion of monster data entry into monsterdetail - datatable - """ - session.add( - MonsterDetail( - new_name="Slime", - old_name="Slime", - description="The most abundant of this popular specie", - family_id=1, - ) - ) - session.commit() - - response = client.get("/dqm1/monsters/1") - data_entry = response.json() - - monster_comparison = { - "id": 1, - "new_name": "Slime", - "old_name": "Slime", - "description": "The most abundant of this popular specie", - "family_id": 1, - "family": None, - } - - assert response.status_code == 200 - assert data_entry["new_name"] == monster_comparison["new_name"] - assert data_entry["old_name"] == monster_comparison["old_name"] - assert data_entry["description"] == monster_comparison["description"] - assert data_entry["family_id"] == monster_comparison["family_id"] - assert data_entry == monster_comparison - - -def test_insert_monster_family(client: TestClient, session: Session): - """ - Test individual insertion of monster family data into monsterfamily table - """ - family_list = [ - "SLIME", - "DRAGON", - "BEAST", - "BIRD", - "PLANT", - "BUG", - "DEVIL", - "UNDEAD", - "MATERIAL", - "???", - ] - - for family in family_list: - session.add(MonsterFamily(family_eng=f"{family}")) - session.commit() - - for i in range(1, 11): - response = client.get(f"dqm1/family/{i}") - family_entry = response.json() - - assert response.status_code == 200 - assert family_entry["family_eng"] == family_list[i - 1] - - -def test_insert_skill(client: TestClient, session: Session): - """ - Tests individual insertion of skill data into skill datatable - Tests association between skills via upgrade_to and upgrade_from - - 'Blaze' upgrades to 'Blazemore', which upgrades to 'Blazemost' - """ - session.add( - Skill( - category_type="Attack", - family_type="Frizz", - new_name="Frizz", - old_name="Blaze", - description="Inflict damage with small fireball ", - mp_cost=2, - required_level=2, - required_mp=7, - required_intelligence=20, - upgrade_to_id=2, - ) - ) - session.add( - Skill( - category_type="Attack", - family_type="Frizz", - new_name="Frizzle", - old_name="Blazemore", - description="Inflict damage with giant fireball", - mp_cost=4, - required_level=13, - required_mp=46, - required_intelligence=64, - upgrade_to_id=3, - upgrade_from_id=1, - ) - ) - session.add( - Skill( - category_type="Attack", - family_type="Frizz", - new_name="Kafrizzle", - old_name="Blazemost", - description="Inflict damage with pillars of fire", - mp_cost=10, - required_level=28, - required_mp=112, - required_intelligence=146, - upgrade_from_id=2, - ) - ) - session.commit() - - response = client.get("dqm1/skills/1") - skill_entry = response.json() - - skill_comparison = { - "category_type": "Attack", - "family_type": "Frizz", - "new_name": "Frizz", - "old_name": "Blaze", - "description": "Inflict damage with small fireball ", - "mp_cost": 2, - "required_level": 2, - "required_hp": None, - "required_mp": 7, - "required_attack": None, - "required_defense": None, - "required_speed": None, - "required_intelligence": 20, - "id": 1, - "upgrade_to": { - "new_name": "Frizzle", - "required_hp": None, - "required_mp": 46, - "required_attack": None, - "required_defense": None, - "required_speed": None, - "required_intelligence": 64, - "id": 2, - "upgrade_to_id": 3, - "upgrade_from_id": 1, - "category_type": "Attack", - "family_type": "Frizz", - "old_name": "Blazemore", - "description": "Inflict damage with giant fireball", - "mp_cost": 4, - "required_level": 13, - }, - "upgrade_from": None, - } - - assert response.status_code == 200 - assert skill_entry == skill_comparison - - skill_entry_2 = client.get("dqm1/skills/2").json() - assert response.status_code == 200 - assert skill_entry_2["upgrade_from"]["old_name"] == "Blaze" - assert skill_entry_2["upgrade_to"]["old_name"] == "Blazemost" - - -def test_insert_item(client: TestClient, session: Session): - """ - Tests individual insertion of item data into items datatable - """ - session.add( - Item( - item_name="Herb", - item_category="recovery", - item_description="Restores around 30 HP", - price=10, - sell_price=6, - sell_location="Bazaar shop 1", - ) - ) - session.commit() - - response = client.get("/dqm1/items/1") - item_entry = response.json() - - item_comparison = { - "item_name": "Herb", - "item_category": "recovery", - "item_description": "Restores around 30 HP", - "price": 10, - "sell_price": 6, - "sell_location": "Bazaar shop 1", - } - - assert response.status_code == 200 - for key, value in item_comparison.items(): - assert item_entry[key] == value - - -def test_insert_item_with_none(client: TestClient, session: Session): - """ - Tests individual insertion of item data into items datatable that has a - price and sell_price of None - """ - session.add( - Item( - item_name="Tiny medal", - item_category="dungeon use", - item_description="Collect and give to medal master for a prize", - price=None, - sell_price=None, - sell_location="found in field", - ) - ) - session.commit() - - response = client.get("/dqm1/items/1") - item_entry = response.json() - - item_comparison = { - "item_name": "Tiny medal", - "item_category": "dungeon use", - "item_description": "Collect and give to medal master for a prize", - "price": None, - "sell_price": None, - "sell_location": "found in field", - } - - assert response.status_code == 200 - for key, value in item_comparison.items(): - assert item_entry[key] == value - - -def test_monster_skill_link(client: TestClient, session: Session): - """ - Tests monster datatable association with skill datatable - """ - session.add( - MonsterDetail( - new_name="Slime", - old_name="Slime", - description="The most abundant of this popular specie", - family_id=1, - ) - ) - session.add( - Skill( - category_type="Attack", - family_type="Sizz", - new_name="Sizz", - old_name="Firebal", - description="Inflict damage to all enemies with a small blaze", - mp_cost=4, - required_level=3, - required_mp=11, - required_intelligence=23, - ) - ) - session.add( - Skill( - category_type="Attack", - family_type="Magic Burst", - new_name="Magic Burst", - old_name="MegaMagic", - description="The most powerful spell to affect all enemies", - mp_cost=999, - required_level=38, - required_mp=210, - required_attack=114, - required_speed=224, - ) - ) - session.add( - Skill( - category_type="Support", - family_type="Dazzle", - new_name="Dazzleflash", - old_name="Radiant", - description="Blinds all enemies with its bright light", - mp_cost=2, - required_level=12, - required_mp=42, - required_speed=72, - required_intelligence=72, - ) - ) - - session.add( - MonsterSkillLink( - monster_id=1, - skill_id=1, - ) - ) - session.add( - MonsterSkillLink( - monster_id=1, - skill_id=2, - ) - ) - session.add( - MonsterSkillLink( - monster_id=1, - skill_id=3, - ) - ) - session.commit() - - response = client.get("dqm1/monstersandskill/1") - monster_entry = response.json() - - assert response.status_code == 200 - assert len(monster_entry["skills"]) == 3 - assert monster_entry["skills"][0]["old_name"] == "Firebal" - assert monster_entry["skills"][1]["old_name"] == "MegaMagic" - assert monster_entry["skills"][2]["old_name"] == "Radiant" - - -def test_skill_combine(client: TestClient, session: Session): - """ - Tests many-to-many connection between skills via SkillCombine Model - """ - # Add skill to skills datatable. - session.add( - Skill( - # id = 1 - category_type="Attack", - family_type="Frizz", - new_name="Frizz", - old_name="Blaze", - description="Inflict damage with small fireball ", - mp_cost=2, - required_level=2, - required_mp=7, - required_intelligence=20, - upgrade_to_id=2, - ) - ) - session.add( - Skill( - # id = 2 - category_type="Attack", - family_type="Frizz", - new_name="Frizzle", - old_name="Blazemore", - description="Inflict damage with giant fireball", - mp_cost=4, - required_level=13, - required_mp=46, - required_intelligence=64, - upgrade_to_id=3, - upgrade_from_id=1, - ) - ) - session.add( - Skill( - # id = 3 - category_type="Attack", - family_type="Frizz", - new_name="Kafrizzle", - old_name="Blazemost", - description="Inflict damage with pillars of fire", - mp_cost=10, - required_level=28, - required_mp=112, - required_intelligence=146, - upgrade_from_id=2, - ) - ) - session.add( - Skill( - # id = 4 - category_type="Attack", - family_type="Frizz", - new_name="Flame Slash", - old_name="FireSlash", - description="Burning blade sword attack", - mp_cost=3, - required_level=11, - required_hp=77, - required_mp=34, - required_attack=66, - required_intelligence=42, - ) - ) - session.add( - Skill( - # id = 5 - category_type="Support", - family_type="Status support", - new_name="Muster Strength", - old_name="ChargeUP", - description="Additional Damage next turn", - mp_cost=0, - required_level=14, - required_hp=98, - required_defense=84, - ) - ) - - # Add SkillCombine connection - # 'FireSlash' can be learned if 'Blazemore' and 'ChargeUP' is known - session.add( - SkillCombine( - combo_skill_id=4, - needed_skill_id=2, - ) - ) - session.add( - SkillCombine( - combo_skill_id=4, - needed_skill_id=5, - ) - ) - session.commit() - - response = client.get("dqm1/skillcombine/4") - skill_combo = response.json() - - assert response.status_code == 200 - - assert skill_combo[0]["needed_skill_id"] == 2 - assert skill_combo[0]["needed_skill"]["old_name"] == "Blazemore" - - assert skill_combo[1]["needed_skill_id"] == 5 - assert skill_combo[1]["needed_skill"]["old_name"] == "ChargeUP" - - -def test_monster_breeding_link(client: TestClient, session: Session): - """ - Test breeding combo insertion. - """ - family_list = [ - "SLIME", # family id = 1 - "DRAGON", # family id = 2 - "BEAST", - "BIRD", - "PLANT", - "BUG", - "DEVIL", - "UNDEAD", - "MATERIAL", - "???", - ] - - for family in family_list: - session.add(MonsterFamily(family_eng=f"{family}")) - - session.add( - MonsterDetail( - # id = 1 - new_name="Drake Slime", - old_name="DrakSlime", - description="Moves & jumps with its tail and wings", - family_id=1, - ) - ) - session.add( - MonsterDetail( - # id = 2 - new_name="Wild slime", - old_name="FangSlime", - description="Has a red Mohawk and is very brave & proud", - family_id=1, - ) - ) - session.add( - MonsterDetail( - # id = 3 - new_name="Spiked hare", - old_name="Almiraj", - description="When cornered, it charges with its sharp horns", - family_id=3, - ) - ) - - # tests pedigree_family + family2 connection - session.add( - MonsterBreedingLink( - child_id=1, - pedigree_family_id=1, - family2_id=2, - ) - ) - # tests pedigree_family + parent2 connection - session.add( - MonsterBreedingLink( - child_id=2, - parent2_id=3, - pedigree_family_id=1, - ) - ) - - session.commit() - - response1 = client.get("dqm1/breeding/1") - breeding_query1 = response1.json() - - entry_comparison1 = [ - { - "id": 1, - "child_id": 1, - "pedigree_id": None, - "parent2_id": None, - "pedigree_family_id": 1, - "family2_id": 2, - "child": { - "id": 1, - "new_name": "Drake Slime", - "old_name": "DrakSlime", - "description": "Moves & jumps with its tail and wings", - "family_id": 1, - }, - "pedigree": None, - "parent2": None, - "pedigree_family": { - "family_eng": "SLIME", - "id": 1, - }, - "family2": { - "family_eng": "DRAGON", - "id": 2, - }, - }, - ] - - assert response1.status_code == 200 - assert breeding_query1[0]["child_id"] == 1 - assert breeding_query1[0]["child"]["old_name"] == "DrakSlime" - assert breeding_query1 == entry_comparison1 - - response2 = client.get("dqm1/breeding/2") - breeding_query2 = response2.json() - - entry_comparison2 = [ - { - "id": 2, - "child_id": 2, - "pedigree_id": None, - "parent2_id": 3, - "pedigree_family_id": 1, - "family2_id": None, - "child": { - "id": 2, - "new_name": "Wild slime", - "old_name": "FangSlime", - "description": "Has a red Mohawk and is very brave & proud", - "family_id": 1, - }, - "pedigree": None, - "parent2": { - "id": 3, - "new_name": "Spiked hare", - "old_name": "Almiraj", - "description": ("When cornered, it charges with its sharp horns"), - "family_id": 3, - }, - "pedigree_family": { - "family_eng": "SLIME", - "id": 1, - }, - "family2": None, - } - ] - - assert response2.status_code == 200 - assert breeding_query2 == entry_comparison2 +from fastapi.testclient import TestClient +from sqlmodel import Session + +from src.app.models.dqm1.item import Item +from src.app.models.dqm1.monster import ( + MonsterBreedingLink, + MonsterDetail, + MonsterSkillLink, +) +from src.app.models.dqm1.monster_family import MonsterFamily +from src.app.models.dqm1.skill import Skill, SkillCombine + + +def test_read_root(client: TestClient): + response = client.get("/") + assert response.status_code == 200 + assert response.json() == { + "message": ("Welcome to the DQMonsters API. Go to the Swagger UI interface") + } + + +def test_insert_monster(client: TestClient, session: Session): + """ + - Tests individual insertion of monster data entry into monsterdetail + datatable + """ + session.add( + MonsterDetail( + new_name="Slime", + old_name="Slime", + description="The most abundant of this popular specie", + family_id=1, + ) + ) + session.commit() + + response = client.get("/dqm1/monsters/1") + data_entry = response.json() + + monster_comparison = { + "id": 1, + "new_name": "Slime", + "old_name": "Slime", + "description": "The most abundant of this popular specie", + "family_id": 1, + "family": None, + } + + assert response.status_code == 200 + assert data_entry["new_name"] == monster_comparison["new_name"] + assert data_entry["old_name"] == monster_comparison["old_name"] + assert data_entry["description"] == monster_comparison["description"] + assert data_entry["family_id"] == monster_comparison["family_id"] + assert data_entry == monster_comparison + + +def test_insert_monster_family(client: TestClient, session: Session): + """ + Test individual insertion of monster family data into monsterfamily table + """ + family_list = [ + "SLIME", + "DRAGON", + "BEAST", + "BIRD", + "PLANT", + "BUG", + "DEVIL", + "UNDEAD", + "MATERIAL", + "???", + ] + + for family in family_list: + session.add(MonsterFamily(family_eng=f"{family}")) + session.commit() + + for i in range(1, 11): + response = client.get(f"dqm1/family/{i}") + family_entry = response.json() + + assert response.status_code == 200 + assert family_entry["family_eng"] == family_list[i - 1] + + +def test_insert_skill(client: TestClient, session: Session): + """ + Tests individual insertion of skill data into skill datatable + Tests association between skills via upgrade_to and upgrade_from + - 'Blaze' upgrades to 'Blazemore', which upgrades to 'Blazemost' + """ + session.add( + Skill( + category_type="Attack", + family_type="Frizz", + new_name="Frizz", + old_name="Blaze", + description="Inflict damage with small fireball ", + mp_cost=2, + required_level=2, + required_mp=7, + required_intelligence=20, + upgrade_to_id=2, + ) + ) + session.add( + Skill( + category_type="Attack", + family_type="Frizz", + new_name="Frizzle", + old_name="Blazemore", + description="Inflict damage with giant fireball", + mp_cost=4, + required_level=13, + required_mp=46, + required_intelligence=64, + upgrade_to_id=3, + upgrade_from_id=1, + ) + ) + session.add( + Skill( + category_type="Attack", + family_type="Frizz", + new_name="Kafrizzle", + old_name="Blazemost", + description="Inflict damage with pillars of fire", + mp_cost=10, + required_level=28, + required_mp=112, + required_intelligence=146, + upgrade_from_id=2, + ) + ) + session.commit() + + response = client.get("dqm1/skills/1") + skill_entry = response.json() + + skill_comparison = { + "category_type": "Attack", + "family_type": "Frizz", + "new_name": "Frizz", + "old_name": "Blaze", + "description": "Inflict damage with small fireball ", + "mp_cost": 2, + "required_level": 2, + "required_hp": None, + "required_mp": 7, + "required_attack": None, + "required_defense": None, + "required_speed": None, + "required_intelligence": 20, + "id": 1, + "upgrade_to": { + "new_name": "Frizzle", + "required_hp": None, + "required_mp": 46, + "required_attack": None, + "required_defense": None, + "required_speed": None, + "required_intelligence": 64, + "id": 2, + "upgrade_to_id": 3, + "upgrade_from_id": 1, + "category_type": "Attack", + "family_type": "Frizz", + "old_name": "Blazemore", + "description": "Inflict damage with giant fireball", + "mp_cost": 4, + "required_level": 13, + }, + "upgrade_from": None, + } + + assert response.status_code == 200 + assert skill_entry == skill_comparison + + skill_entry_2 = client.get("dqm1/skills/2").json() + assert response.status_code == 200 + assert skill_entry_2["upgrade_from"]["old_name"] == "Blaze" + assert skill_entry_2["upgrade_to"]["old_name"] == "Blazemost" + + +def test_insert_item(client: TestClient, session: Session): + """ + Tests individual insertion of item data into items datatable + """ + session.add( + Item( + item_name="Herb", + item_category="recovery", + item_description="Restores around 30 HP", + price=10, + sell_price=6, + sell_location="Bazaar shop 1", + ) + ) + session.commit() + + response = client.get("/dqm1/items/1") + item_entry = response.json() + + item_comparison = { + "item_name": "Herb", + "item_category": "recovery", + "item_description": "Restores around 30 HP", + "price": 10, + "sell_price": 6, + "sell_location": "Bazaar shop 1", + } + + assert response.status_code == 200 + for key, value in item_comparison.items(): + assert item_entry[key] == value + + +def test_insert_item_with_none(client: TestClient, session: Session): + """ + Tests individual insertion of item data into items datatable that has a + price and sell_price of None + """ + session.add( + Item( + item_name="Tiny medal", + item_category="dungeon use", + item_description="Collect and give to medal master for a prize", + price=None, + sell_price=None, + sell_location="found in field", + ) + ) + session.commit() + + response = client.get("/dqm1/items/1") + item_entry = response.json() + + item_comparison = { + "item_name": "Tiny medal", + "item_category": "dungeon use", + "item_description": "Collect and give to medal master for a prize", + "price": None, + "sell_price": None, + "sell_location": "found in field", + } + + assert response.status_code == 200 + for key, value in item_comparison.items(): + assert item_entry[key] == value + + +def test_monster_skill_link(client: TestClient, session: Session): + """ + Tests monster datatable association with skill datatable + """ + session.add( + MonsterDetail( + new_name="Slime", + old_name="Slime", + description="The most abundant of this popular specie", + family_id=1, + ) + ) + session.add( + Skill( + category_type="Attack", + family_type="Sizz", + new_name="Sizz", + old_name="Firebal", + description="Inflict damage to all enemies with a small blaze", + mp_cost=4, + required_level=3, + required_mp=11, + required_intelligence=23, + ) + ) + session.add( + Skill( + category_type="Attack", + family_type="Magic Burst", + new_name="Magic Burst", + old_name="MegaMagic", + description="The most powerful spell to affect all enemies", + mp_cost=999, + required_level=38, + required_mp=210, + required_attack=114, + required_speed=224, + ) + ) + session.add( + Skill( + category_type="Support", + family_type="Dazzle", + new_name="Dazzleflash", + old_name="Radiant", + description="Blinds all enemies with its bright light", + mp_cost=2, + required_level=12, + required_mp=42, + required_speed=72, + required_intelligence=72, + ) + ) + + session.add( + MonsterSkillLink( + monster_id=1, + skill_id=1, + ) + ) + session.add( + MonsterSkillLink( + monster_id=1, + skill_id=2, + ) + ) + session.add( + MonsterSkillLink( + monster_id=1, + skill_id=3, + ) + ) + session.commit() + + response = client.get("dqm1/monstersandskill/1") + monster_entry = response.json() + + assert response.status_code == 200 + assert len(monster_entry["skills"]) == 3 + assert monster_entry["skills"][0]["old_name"] == "Firebal" + assert monster_entry["skills"][1]["old_name"] == "MegaMagic" + assert monster_entry["skills"][2]["old_name"] == "Radiant" + + +def test_skill_combine(client: TestClient, session: Session): + """ + Tests many-to-many connection between skills via SkillCombine Model + """ + # Add skill to skills datatable. + session.add( + Skill( + # id = 1 + category_type="Attack", + family_type="Frizz", + new_name="Frizz", + old_name="Blaze", + description="Inflict damage with small fireball ", + mp_cost=2, + required_level=2, + required_mp=7, + required_intelligence=20, + upgrade_to_id=2, + ) + ) + session.add( + Skill( + # id = 2 + category_type="Attack", + family_type="Frizz", + new_name="Frizzle", + old_name="Blazemore", + description="Inflict damage with giant fireball", + mp_cost=4, + required_level=13, + required_mp=46, + required_intelligence=64, + upgrade_to_id=3, + upgrade_from_id=1, + ) + ) + session.add( + Skill( + # id = 3 + category_type="Attack", + family_type="Frizz", + new_name="Kafrizzle", + old_name="Blazemost", + description="Inflict damage with pillars of fire", + mp_cost=10, + required_level=28, + required_mp=112, + required_intelligence=146, + upgrade_from_id=2, + ) + ) + session.add( + Skill( + # id = 4 + category_type="Attack", + family_type="Frizz", + new_name="Flame Slash", + old_name="FireSlash", + description="Burning blade sword attack", + mp_cost=3, + required_level=11, + required_hp=77, + required_mp=34, + required_attack=66, + required_intelligence=42, + ) + ) + session.add( + Skill( + # id = 5 + category_type="Support", + family_type="Status support", + new_name="Muster Strength", + old_name="ChargeUP", + description="Additional Damage next turn", + mp_cost=0, + required_level=14, + required_hp=98, + required_defense=84, + ) + ) + + # Add SkillCombine connection + # 'FireSlash' can be learned if 'Blazemore' and 'ChargeUP' is known + session.add( + SkillCombine( + combo_skill_id=4, + needed_skill_id=2, + ) + ) + session.add( + SkillCombine( + combo_skill_id=4, + needed_skill_id=5, + ) + ) + session.commit() + + response = client.get("dqm1/skillcombine/4") + skill_combo = response.json() + + assert response.status_code == 200 + + assert skill_combo[0]["needed_skill_id"] == 2 + assert skill_combo[0]["needed_skill"]["old_name"] == "Blazemore" + + assert skill_combo[1]["needed_skill_id"] == 5 + assert skill_combo[1]["needed_skill"]["old_name"] == "ChargeUP" + + +def test_monster_breeding_link(client: TestClient, session: Session): + """ + Test breeding combo insertion. + """ + family_list = [ + "SLIME", # family id = 1 + "DRAGON", # family id = 2 + "BEAST", + "BIRD", + "PLANT", + "BUG", + "DEVIL", + "UNDEAD", + "MATERIAL", + "???", + ] + + for family in family_list: + session.add(MonsterFamily(family_eng=f"{family}")) + + session.add( + MonsterDetail( + # id = 1 + new_name="Drake Slime", + old_name="DrakSlime", + description="Moves & jumps with its tail and wings", + family_id=1, + ) + ) + session.add( + MonsterDetail( + # id = 2 + new_name="Wild slime", + old_name="FangSlime", + description="Has a red Mohawk and is very brave & proud", + family_id=1, + ) + ) + session.add( + MonsterDetail( + # id = 3 + new_name="Spiked hare", + old_name="Almiraj", + description="When cornered, it charges with its sharp horns", + family_id=3, + ) + ) + + # tests pedigree_family + family2 connection + session.add( + MonsterBreedingLink( + child_id=1, + pedigree_family_id=1, + family2_id=2, + ) + ) + # tests pedigree_family + parent2 connection + session.add( + MonsterBreedingLink( + child_id=2, + parent2_id=3, + pedigree_family_id=1, + ) + ) + + session.commit() + + response1 = client.get("dqm1/breeding/1") + breeding_query1 = response1.json() + + entry_comparison1 = [ + { + "id": 1, + "child_id": 1, + "pedigree_id": None, + "parent2_id": None, + "pedigree_family_id": 1, + "family2_id": 2, + "child": { + "id": 1, + "new_name": "Drake Slime", + "old_name": "DrakSlime", + "description": "Moves & jumps with its tail and wings", + "family_id": 1, + }, + "pedigree": None, + "parent2": None, + "pedigree_family": { + "family_eng": "SLIME", + "id": 1, + }, + "family2": { + "family_eng": "DRAGON", + "id": 2, + }, + }, + ] + + assert response1.status_code == 200 + assert breeding_query1[0]["child_id"] == 1 + assert breeding_query1[0]["child"]["old_name"] == "DrakSlime" + assert breeding_query1 == entry_comparison1 + + response2 = client.get("dqm1/breeding/2") + breeding_query2 = response2.json() + + entry_comparison2 = [ + { + "id": 2, + "child_id": 2, + "pedigree_id": None, + "parent2_id": 3, + "pedigree_family_id": 1, + "family2_id": None, + "child": { + "id": 2, + "new_name": "Wild slime", + "old_name": "FangSlime", + "description": "Has a red Mohawk and is very brave & proud", + "family_id": 1, + }, + "pedigree": None, + "parent2": { + "id": 3, + "new_name": "Spiked hare", + "old_name": "Almiraj", + "description": ("When cornered, it charges with its sharp horns"), + "family_id": 3, + }, + "pedigree_family": { + "family_eng": "SLIME", + "id": 1, + }, + "family2": None, + } + ] + + assert response2.status_code == 200 + assert breeding_query2 == entry_comparison2 From 69cfd2427be9fdd3d339d0bda871c37a7dd6801b Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Mon, 7 Jul 2025 16:48:07 -0700 Subject: [PATCH 22/27] refactor(models): Moved API read models to schemas - Moved MonsterFamilyRead related models from monster_family.py to schemas.py - Moved MonsterDetailRead related models from monster.py - Moved SkillRead related models from skill.py - Prevents circular import problem between model files that import each other --- src/app/models/dqm1/schemas.py | 55 ++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/app/models/dqm1/schemas.py diff --git a/src/app/models/dqm1/schemas.py b/src/app/models/dqm1/schemas.py new file mode 100644 index 0000000..8f880b4 --- /dev/null +++ b/src/app/models/dqm1/schemas.py @@ -0,0 +1,55 @@ +from typing import List, Optional + +from .monster import MonsterBreedingLinkBase, MonsterDetailBase +from .monster_family import MonsterFamilyBase +from .skill import Skill, SkillBase, SkillCombineBase + + +class MonsterFamilyRead(MonsterFamilyBase): + id: int + + +class MonsterFamilyReadWithMonsterDetail(MonsterFamilyRead): + monsters: List["MonsterDetailRead"] = [] + + +class MonsterDetailRead(MonsterDetailBase): + id: int + + +class MonsterDetailWithFamily(MonsterDetailRead): + family: Optional[MonsterFamilyRead] = None + + +class MonsterBreedingLinkRead(MonsterBreedingLinkBase): + id: int + + +class MonsterBreedingLinkReadWithInfo(MonsterBreedingLinkRead): + child: Optional[MonsterDetailRead] + pedigree: Optional[MonsterDetailRead] + parent2: Optional[MonsterDetailRead] + pedigree_family: Optional[MonsterFamilyRead] + family2: Optional[MonsterFamilyRead] + + +class SkillRead(SkillBase): + id: int + + +class SkillReadWithMonster(SkillRead): + monsters: Optional[MonsterDetailRead] + + +class SkillUpgradeRead(SkillRead): + upgrade_to: Optional[Skill] + upgrade_from: Optional[Skill] + + +class MonsterDetailSkill(MonsterDetailWithFamily): + skills: List[SkillRead] = [] + + +class SkillCombineRead(SkillCombineBase): + id: int + needed_skill: Optional[SkillRead] From b73a70fe8d2cd02b1749eff2ad9c30b824ca85f2 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Mon, 7 Jul 2025 16:54:07 -0700 Subject: [PATCH 23/27] refactor(models): Removed MonsterDetailRead model - Removed MonsterDetailRead related models to schemas.py - Moved MonsterSkillLink to associations.py --- src/app/models/dqm1/monster.py | 42 ++++------------------------------ 1 file changed, 4 insertions(+), 38 deletions(-) diff --git a/src/app/models/dqm1/monster.py b/src/app/models/dqm1/monster.py index d75bdbc..b3fe453 100644 --- a/src/app/models/dqm1/monster.py +++ b/src/app/models/dqm1/monster.py @@ -2,25 +2,11 @@ from sqlmodel import Field, Relationship, SQLModel +from .associations import MonsterSkillLink + if TYPE_CHECKING: from .skill import Skill - from .monster_family import MonsterFamily, MonsterFamilyRead - - -class MonsterSkillLink(SQLModel, table=True): - """ - many-to-many association table linking a monster to three different skills. - """ - - id: Optional[int] = Field(default=None, primary_key=True) - monster_id: Optional[int] = Field( - default=None, - foreign_key="monsterdetail.id", - ) - skill_id: Optional[int] = Field( - default=None, - foreign_key="skill.id", - ) + from .monster_family import MonsterFamily class MonsterDetailBase(SQLModel): @@ -39,20 +25,12 @@ class MonsterDetailBase(SQLModel): class MonsterDetail(MonsterDetailBase, table=True): id: Optional[int] = Field(default=None, primary_key=True) - family: List["MonsterFamily"] = Relationship(back_populates="monsters") + family: Optional["MonsterFamily"] = Relationship(back_populates="monsters") skills: List["Skill"] = Relationship( back_populates="monsters", link_model=MonsterSkillLink ) -class MonsterDetailRead(MonsterDetailBase): - id: int - - -class MonsterDetailWithFamily(MonsterDetailRead): - family: Optional[MonsterFamilyRead] - - class MonsterBreedingLinkBase(SQLModel): child_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") pedigree_id: Optional[int] = Field(default=None, foreign_key="monsterdetail.id") @@ -112,15 +90,3 @@ class MonsterBreedingLink(MonsterBreedingLinkBase, table=True): "lazy": "joined", } ) - - -class MonsterBreedingLinkRead(MonsterBreedingLinkBase): - id: int - - -class MonsterBreedingLinkReadWithInfo(MonsterBreedingLinkRead): - child: Optional[MonsterDetailRead] - pedigree: Optional[MonsterDetailRead] - parent2: Optional[MonsterDetailRead] - pedigree_family: Optional[MonsterFamilyRead] - family2: Optional[MonsterFamilyRead] From 90edae92364bfbe37a21b2cc72d8507c7a060f65 Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Mon, 7 Jul 2025 17:13:12 -0700 Subject: [PATCH 24/27] refactor(models): Removed MonsterFamilyRead class - Moved MonsterFamilyRead class to models/dqm1/schemas.py file --- src/app/models/dqm1/monster_family.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/app/models/dqm1/monster_family.py b/src/app/models/dqm1/monster_family.py index b52805d..58e42a8 100644 --- a/src/app/models/dqm1/monster_family.py +++ b/src/app/models/dqm1/monster_family.py @@ -3,7 +3,7 @@ from sqlmodel import Field, Relationship, SQLModel if TYPE_CHECKING: - from .monster import MonsterDetail, MonsterDetailRead + from .monster import MonsterDetail class MonsterFamilyBase(SQLModel): @@ -21,11 +21,3 @@ class MonsterFamily(MonsterFamilyBase, table=True): id: Optional[int] = Field(default=None, primary_key=True) monsters: List["MonsterDetail"] = Relationship(back_populates="family") - - -class MonsterFamilyRead(MonsterFamilyBase): - id: int - - -class MonsterFamilyReadWithMonsterDetail(MonsterFamilyRead): - monsters: List["MonsterDetailRead"] = [] From 1872eaed50ce26ee5f674ec8a9192a166c5f061f Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Mon, 7 Jul 2025 17:15:32 -0700 Subject: [PATCH 25/27] refactor(models): Moved SkillRead to schemas.py - Moved SkillRead related classes to schemas.py - Updated import statements --- src/app/models/dqm1/skill.py | 209 +++++++++++++++-------------------- 1 file changed, 89 insertions(+), 120 deletions(-) diff --git a/src/app/models/dqm1/skill.py b/src/app/models/dqm1/skill.py index 0d92333..9603a36 100644 --- a/src/app/models/dqm1/skill.py +++ b/src/app/models/dqm1/skill.py @@ -1,120 +1,89 @@ -from typing import List, Optional, TYPE_CHECKING - -from sqlmodel import Field, Relationship, SQLModel -from .monster import ( - MonsterDetail, - MonsterSkillLink, - MonsterDetailRead, - MonsterDetailWithFamily, -) - -if TYPE_CHECKING: - from .monster import ( - MonsterDetail, - MonsterSkillLink, - MonsterDetailRead, - MonsterDetailWithFamily, - ) - - -class SkillBase(SQLModel): - """ - Shows description, MP cost, and required stats to learn skill. - Each monster naturally learns 3 skills. - """ - - category_type: str - family_type: str - new_name: Optional[str] = Field(default=None) - old_name: str - description: str - mp_cost: int - required_level: int - required_hp: Optional[int] = None - required_mp: Optional[int] = None - required_attack: Optional[int] = None - required_defense: Optional[int] = None - required_speed: Optional[int] = None - required_intelligence: Optional[int] = None - - -class Skill(SkillBase, table=True): - id: Optional[int] = Field(default=None, primary_key=True) - - upgrade_to_id: Optional[int] = Field( - foreign_key="skill.id", # lowercase refers to database table name - default=None, - ) - upgrade_to: Optional["Skill"] = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "Skill.upgrade_to_id==Skill.id", - "lazy": "joined", - "remote_side": "Skill.id", # uppercase refers to this Skill class - } - ) - - upgrade_from_id: Optional[int] = Field( - foreign_key="skill.id", - default=None, - ) - upgrade_from: Optional["Skill"] = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "Skill.upgrade_from_id==Skill.id", - "lazy": "joined", - "remote_side": "Skill.id", - } - ) - - monsters: List["MonsterDetail"] = Relationship( - back_populates="skills", link_model=MonsterSkillLink - ) - - -class SkillRead(SkillBase): - id: int - - -class SkillReadWithMonster(SkillRead): - monsters: Optional[MonsterDetailRead] - - -class SkillUpgradeRead(SkillRead): - upgrade_to: Optional[Skill] - upgrade_from: Optional[Skill] - - -class MonsterDetailSkill(MonsterDetailWithFamily): - skills: List[SkillRead] = [] - - -class SkillCombineBase(SQLModel): - combo_skill_id: Optional[int] = Field(default=None, foreign_key="skill.id") - needed_skill_id: Optional[int] = Field(default=None, foreign_key="skill.id") - - -class SkillCombine(SkillCombineBase, table=True): - """ - many-to-many association table showing certain needed skills combine to - learn new combo skill. - """ - - id: Optional[int] = Field(default=None, primary_key=True) - - combo_skill: Skill = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "SkillCombine.combo_skill_id==Skill.id", - "lazy": "joined", - } - ) - - needed_skill: Skill = Relationship( - sa_relationship_kwargs={ - "primaryjoin": "SkillCombine.needed_skill_id==Skill.id", - "lazy": "joined", - } - ) - - -class SkillCombineRead(SkillCombineBase): - id: int - needed_skill: Optional[SkillRead] +from typing import List, Optional, TYPE_CHECKING + +from sqlmodel import Field, Relationship, SQLModel + +from .associations import MonsterSkillLink + +if TYPE_CHECKING: + from .monster import MonsterDetail + + +class SkillBase(SQLModel): + """ + Shows description, MP cost, and required stats to learn skill. + Each monster naturally learns 3 skills. + """ + + category_type: str + family_type: str + new_name: Optional[str] = Field(default=None) + old_name: str + description: str + mp_cost: int + required_level: int + required_hp: Optional[int] = None + required_mp: Optional[int] = None + required_attack: Optional[int] = None + required_defense: Optional[int] = None + required_speed: Optional[int] = None + required_intelligence: Optional[int] = None + + +class Skill(SkillBase, table=True): + id: Optional[int] = Field(default=None, primary_key=True) + + upgrade_to_id: Optional[int] = Field( + foreign_key="skill.id", # lowercase refers to database table name + default=None, + ) + upgrade_to: Optional["Skill"] = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "Skill.upgrade_to_id==Skill.id", + "lazy": "joined", + "remote_side": "Skill.id", # uppercase refers to this Skill class + } + ) + + upgrade_from_id: Optional[int] = Field( + foreign_key="skill.id", + default=None, + ) + upgrade_from: Optional["Skill"] = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "Skill.upgrade_from_id==Skill.id", + "lazy": "joined", + "remote_side": "Skill.id", + } + ) + + monsters: List["MonsterDetail"] = Relationship( + back_populates="skills", link_model=MonsterSkillLink + ) + + +class SkillCombineBase(SQLModel): + combo_skill_id: Optional[int] = Field(default=None, foreign_key="skill.id") + needed_skill_id: Optional[int] = Field(default=None, foreign_key="skill.id") + + +class SkillCombine(SkillCombineBase, table=True): + """ + many-to-many association table showing certain needed skills combine to + learn new combo skill. + """ + + id: Optional[int] = Field(default=None, primary_key=True) + + combo_skill: Skill = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "SkillCombine.combo_skill_id==Skill.id", + "lazy": "joined", + } + ) + + needed_skill: Skill = Relationship( + sa_relationship_kwargs={ + "primaryjoin": "SkillCombine.needed_skill_id==Skill.id", + "lazy": "joined", + } + ) From 29c3f3b7720103e5743f1e98b18c601b31312e7f Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Mon, 7 Jul 2025 17:30:33 -0700 Subject: [PATCH 26/27] refactor(models): Isolate association table to fix circular import A circular dependency between the `monster` and `skill` models was causing `PydanticUndefinedAnnotation` and `NoInspectionAvailable` errors during application startup and testing. This occurred because the `MonsterSkillLink` association model was defined in `monster.py` but was needed at runtime by `skill.py`, creating an import deadlock. This commit resolves the issue by moving `MonsterSkillLink` to its own dedicated file, `src/app/models/dqm1/associations.py`. This breaks the import cycle, as both `monster` and `skill` models can now safely import the association table from a neutral location. --- src/app/models/dqm1/associations.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/app/models/dqm1/associations.py diff --git a/src/app/models/dqm1/associations.py b/src/app/models/dqm1/associations.py new file mode 100644 index 0000000..38abef2 --- /dev/null +++ b/src/app/models/dqm1/associations.py @@ -0,0 +1,19 @@ +from typing import Optional + +from sqlmodel import Field, SQLModel + + +class MonsterSkillLink(SQLModel, table=True): + """ + many-to-many association table linking a monster to three different skills. + """ + + id: Optional[int] = Field(default=None, primary_key=True) + monster_id: Optional[int] = Field( + default=None, + foreign_key="monsterdetail.id", + ) + skill_id: Optional[int] = Field( + default=None, + foreign_key="skill.id", + ) From a12e9f7d92ff0b5d14530d38e686280783f6c63f Mon Sep 17 00:00:00 2001 From: Chris Sato Date: Tue, 8 Jul 2025 00:46:13 -0700 Subject: [PATCH 27/27] fix import statements - Due to changes to model files, import statements using those models were changed to reflect it --- src/app/create_database.py | 10 +++------- src/app/routers/dqm1_endpoints.py | 16 +++++----------- tests/conftest.py | 2 +- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/app/create_database.py b/src/app/create_database.py index 0e6723b..3d97cff 100644 --- a/src/app/create_database.py +++ b/src/app/create_database.py @@ -1,20 +1,16 @@ import csv from pathlib import Path -from sqlmodel import Session, select from sqlalchemy.exc import IntegrityError +from sqlmodel import Session, select from src.app.database import create_db_and_tables, engine +from src.app.models.dqm1.associations import MonsterSkillLink from src.app.models.dqm1.item import Item -from src.app.models.dqm1.monster import ( - MonsterBreedingLink, - MonsterDetail, - MonsterSkillLink, -) +from src.app.models.dqm1.monster import MonsterBreedingLink, MonsterDetail from src.app.models.dqm1.monster_family import MonsterFamily from src.app.models.dqm1.skill import Skill, SkillCombine - current_dir = Path(__file__).resolve().parent csv_dir = current_dir.parent / "csv_files" diff --git a/src/app/routers/dqm1_endpoints.py b/src/app/routers/dqm1_endpoints.py index 88420ab..017d042 100644 --- a/src/app/routers/dqm1_endpoints.py +++ b/src/app/routers/dqm1_endpoints.py @@ -11,23 +11,17 @@ SkillFamily, ) from src.app.models.dqm1.item import Item -from src.app.models.dqm1.monster import ( - MonsterBreedingLink, +from src.app.models.dqm1.monster import MonsterBreedingLink, MonsterDetail +from src.app.models.dqm1.monster_family import MonsterFamily +from src.app.models.dqm1.schemas import ( MonsterBreedingLinkReadWithInfo, - MonsterDetail, + MonsterDetailSkill, MonsterDetailWithFamily, -) -from src.app.models.dqm1.monster_family import ( - MonsterFamily, MonsterFamilyReadWithMonsterDetail, -) -from src.app.models.dqm1.skill import ( - MonsterDetailSkill, - Skill, - SkillCombine, SkillCombineRead, SkillUpgradeRead, ) +from src.app.models.dqm1.skill import Skill, SkillCombine router = APIRouter( prefix="/dqm1", diff --git a/tests/conftest.py b/tests/conftest.py index 9435a91..68e365d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,10 +9,10 @@ from src.app.database import get_session from src.app.main import app from src.app.models.dqm1.item import Item +from src.app.models.dqm1.associations import MonsterSkillLink from src.app.models.dqm1.monster import ( MonsterBreedingLink, MonsterDetail, - MonsterSkillLink, ) from src.app.models.dqm1.monster_family import MonsterFamily from src.app.models.dqm1.skill import Skill, SkillCombine