Skip to content

Commit bd8ac3e

Browse files
committed
uuid in post model
1 parent 268a4bc commit bd8ac3e

File tree

8 files changed

+21
-107
lines changed

8 files changed

+21
-107
lines changed

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,6 @@ ALGORITHM= # pick an algorithm, default HS256
7575
ACCESS_TOKEN_EXPIRE_MINUTES= # minutes until token expires, default 30
7676
```
7777

78-
For tests, create:
79-
```
80-
# ------------- test -------------
81-
TEST_EMAIL="[email protected]"
82-
TEST_USERNAME="testeruser"
83-
TEST_PASSWORD="Str1ng$t"
84-
```
85-
8678
And finally for the first admin user:
8779
```
8880
# ------------- admin -------------
@@ -151,12 +143,20 @@ poetry run alembic upgrade head
151143

152144
___
153145
## Testing
146+
For tests, create in .env:
147+
```
148+
# ------------- test -------------
149+
TEST_EMAIL="[email protected]"
150+
TEST_USERNAME="testeruser"
151+
TEST_PASSWORD="Str1ng$t"
152+
```
153+
154154
While in the tests folder, create your test file with the name "test_{object}.py", replacing object with what you're testing
155155
```sh
156156
touch test_items.py
157157
```
158158

159-
Create your tests (you may want to copy the structure in test_user.py), then run:
159+
Finally create your tests (you may want to copy the structure in test_user.py), then run:
160160
```sh
161161
poetry run python -m pytest
162162
```

src/app/api/dependencies.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from app.crud.crud_users import crud_users
1313
from app.api.exceptions import credentials_exception, privileges_exception
1414

15-
async def get_current_user(token: Annotated[str, Depends(oauth2_scheme)], db: Annotated[AsyncSession, Depends(async_get_db)]):
15+
async def get_current_user(token: Annotated[str, Depends(oauth2_scheme)], db: Annotated[AsyncSession, Depends(async_get_db)]) -> User:
1616
try:
1717
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
1818
username_or_email: str = payload.get("sub")

src/app/api/v1/posts.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,10 @@ async def erase_post(
113113
return message
114114

115115

116-
@router.delete("/{username}/db_post/{id}")
116+
@router.delete("/{username}/db_post/{id}", dependencies=Depends(get_current_superuser))
117117
async def erase_db_post(
118118
username: str,
119119
id: int,
120-
current_superuser: Annotated[UserRead, Depends(get_current_superuser)],
121120
db: Annotated[AsyncSession, Depends(async_get_db)]
122121
):
123122
db_user = await crud_users.get(db=db, username=username, is_deleted=False)

src/app/api/v1/users.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,9 @@ async def erase_user(
9898
return db_user
9999

100100

101-
@router.delete("/db_user/{username}")
101+
@router.delete("/db_user/{username}", dependencies=Depends(get_current_superuser))
102102
async def erase_db_user(
103103
username: str,
104-
current_superuser: Annotated[UserRead, Depends(get_current_superuser)],
105104
db: AsyncSession = Depends(async_get_db)
106105
):
107106
db_user = await crud_users.get(db=db, username=username)

src/app/crud/crud_base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Dict, Generic, List, Optional, Type, TypeVar, Union
1+
from typing import Any, Dict, Generic, List, Type, TypeVar, Union
22
from datetime import datetime
33

44
from pydantic import BaseModel
@@ -24,7 +24,7 @@ async def create(
2424
await db.commit()
2525
return db_object
2626

27-
async def get(self, db: AsyncSession, **kwargs) -> Optional[ModelType]:
27+
async def get(self, db: AsyncSession, **kwargs) -> ModelType | None:
2828
query = select(self._model).filter_by(**kwargs)
2929
result = await db.execute(query)
3030
return result.scalar_one_or_none()
@@ -46,7 +46,7 @@ async def update(
4646
object: Union[UpdateSchemaType, Dict[str, Any]],
4747
db_object: ModelType | None = None,
4848
**kwargs
49-
) -> Optional[ModelType]:
49+
) -> ModelType | None:
5050
db_object = db_object or await self.get(db=db, **kwargs)
5151
if db_object:
5252
if isinstance(object, dict):
@@ -80,7 +80,7 @@ async def delete(
8080
db: AsyncSession,
8181
db_object: ModelType | None = None,
8282
**kwargs
83-
) -> Optional[ModelType]:
83+
) -> ModelType | None:
8484
db_object = db_object or await self.get(db=db, **kwargs)
8585
if db_object:
8686
if "is_deleted" in db_object.__dict__.keys():

src/app/models/post.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from typing import Optional
21
import uuid as uuid_pkg
32
from datetime import datetime
43

@@ -16,13 +15,16 @@ class Post(Base):
1615
created_by_user_id: Mapped[int] = mapped_column(ForeignKey("user.id"))
1716
title: Mapped[str] = mapped_column(String(30))
1817
text: Mapped[str] = mapped_column(String(63206))
18+
uuid: Mapped[uuid_pkg.UUID] = mapped_column(
19+
default_factory=uuid_pkg.uuid4, primary_key=True, unique=True
20+
)
1921
media_url: Mapped[str | None] = mapped_column(String, default=None)
2022

2123
user: Mapped["User"] = relationship(back_populates="posts", lazy="selectin", init=False)
2224

2325
created_at: Mapped[datetime] = mapped_column(
2426
DateTime, default_factory=datetime.utcnow
2527
)
26-
updated_at: Mapped[Optional[datetime]] = mapped_column(default=None)
27-
deleted_at: Mapped[Optional[datetime]] = mapped_column(default=None)
28+
updated_at: Mapped[datetime | None] = mapped_column(default=None)
29+
deleted_at: Mapped[datetime | None] = mapped_column(default=None)
2830
is_deleted: Mapped[bool] = mapped_column(default=False)

src/migrations/versions/211a8b0d0080_.py

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

src/migrations/versions/474ddfe32ea7_.py

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

0 commit comments

Comments
 (0)