Skip to content

Commit baa1592

Browse files
authored
♻️ store 패키지 리팩토링 (#52)
1 parent b11c659 commit baa1592

18 files changed

Lines changed: 322 additions & 218 deletions

alembic/env.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import app.models.event # noqa: F401
2424
import app.models.review_image # noqa: F401
2525
import app.models.review_submission # noqa: F401
26-
import app.models.store # noqa: F401
26+
import app.store.models # noqa: F401
2727
import app.models.user # noqa: F401
2828

2929
target_metadata = Base.metadata

app/api/v1/router.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
from app.api.v1.endpoints.application import router as application_router
44
from app.api.v1.endpoints.event import router as event_router
5-
from app.api.v1.endpoints.store import router as store_router
65

76
router = APIRouter()
8-
router.include_router(store_router)
97
router.include_router(event_router)
108
router.include_router(application_router)

app/db/seed.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
from app.models.review_submission import (
1818
ReviewSubmission as ReviewSubmission, # noqa: F401
1919
)
20-
from app.models.store import Store
2120
from app.models.user import User
21+
from app.store.models import Store
2222

2323
logger = logging.getLogger(__name__)
2424

app/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from app.db.seed import reset_and_seed
1414
from app.db.session import engine
1515
from app.s3.router import router as s3_router
16+
from app.store.router import router as store_router
1617

1718

1819
@asynccontextmanager
@@ -26,6 +27,7 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
2627

2728
app.include_router(auth_router, prefix="/api")
2829
app.include_router(s3_router, prefix="/api")
30+
app.include_router(store_router, prefix="/api")
2931
app.include_router(api_router, prefix="/api")
3032

3133

app/services/event.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
from app.models.application import Application
1313
from app.models.event import Event
1414
from app.models.review_submission import ReviewSubmission
15-
from app.models.store import Store
1615
from app.models.user import User
1716
from app.schemas.event import ApplicationSummary, EventCreateReq
1817
from app.services import blockchain as blockchain_service
18+
from app.store.models import Store
1919

2020

2121
async def _get_store_or_404(db: AsyncSession, store_id: str) -> Store:

app/services/store.py

Lines changed: 0 additions & 106 deletions
This file was deleted.

app/store/__init__.py

Whitespace-only changes.

app/store/dependencies.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from fastapi import Depends
2+
from sqlalchemy.ext.asyncio import AsyncSession
3+
4+
from app.db.session import get_db
5+
from app.store.repository import StoreRepository
6+
from app.store.repository_impl import StoreRepositoryImpl
7+
from app.store.service import StoreService
8+
from app.store.service_impl import StoreServiceImpl
9+
10+
11+
def get_store_repository(db: AsyncSession = Depends(get_db)) -> StoreRepository:
12+
return StoreRepositoryImpl(db)
13+
14+
15+
def get_store_service(
16+
repo: StoreRepository = Depends(get_store_repository),
17+
) -> StoreService:
18+
return StoreServiceImpl(repo)
File renamed without changes.

app/store/repository.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from abc import ABC, abstractmethod
2+
from uuid import UUID
3+
4+
from app.models.event import Event
5+
from app.store.models import Store
6+
7+
8+
class StoreRepository(ABC):
9+
@abstractmethod
10+
async def find_by_id(self, store_id: UUID) -> Store | None: ...
11+
12+
@abstractmethod
13+
async def find_all(
14+
self,
15+
*,
16+
category: str | None,
17+
name: str | None,
18+
offset: int,
19+
limit: int,
20+
) -> tuple[list[Store], int]: ...
21+
22+
@abstractmethod
23+
async def save(self, store: Store) -> Store: ...
24+
25+
@abstractmethod
26+
async def delete(self, store: Store) -> None: ...
27+
28+
@abstractmethod
29+
async def find_events_by_store_id(self, store_id: UUID) -> list[Event]: ...

0 commit comments

Comments
 (0)