Skip to content

Commit 45781d7

Browse files
authored
Merge pull request #121 from igorbenav/minor-fixes
logging added to scripts, get_db fix, endpoints fixed for fastcrud usage
2 parents b1a8370 + 7912b11 commit 45781d7

File tree

7 files changed

+75
-53
lines changed

7 files changed

+75
-53
lines changed

src/app/api/v1/posts.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ async def erase_post(
132132
if db_post is None:
133133
raise NotFoundException("Post not found")
134134

135-
await crud_posts.delete(db=db, db_row=db_post, id=id)
135+
await crud_posts.delete(db=db, id=id)
136136

137137
return {"message": "Post deleted"}
138138

src/app/api/v1/rate_limits.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,5 +115,5 @@ async def erase_rate_limit(
115115
if db_rate_limit is None:
116116
raise RateLimitException("Rate Limit not found")
117117

118-
await crud_rate_limits.delete(db=db, db_row=db_rate_limit, id=db_rate_limit["id"])
118+
await crud_rate_limits.delete(db=db, id=db_rate_limit["id"])
119119
return {"message": "Rate Limit deleted"}

src/app/api/v1/tiers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,5 @@ async def erase_tier(request: Request, name: str, db: Annotated[AsyncSession, De
6666
if db_tier is None:
6767
raise NotFoundException("Tier not found")
6868

69-
await crud_tiers.delete(db=db, db_row=db_tier, name=name)
69+
await crud_tiers.delete(db=db, name=name)
7070
return {"message": "Tier deleted"}

src/app/api/v1/users.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ async def erase_user(
115115
if username != current_user["username"]:
116116
raise ForbiddenException()
117117

118-
await crud_users.delete(db=db, db_row=db_user, username=username)
118+
await crud_users.delete(db=db, username=username)
119119
await blacklist_token(token=token, db=db)
120120
return {"message": "User deleted"}
121121

src/app/core/db/database.py

-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,5 @@ class Base(DeclarativeBase, MappedAsDataclass):
2020

2121
async def async_get_db() -> AsyncSession:
2222
async_session = local_session
23-
2423
async with async_session() as db:
2524
yield db
26-
await db.commit()

src/scripts/create_first_superuser.py

+50-37
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import asyncio
22
import uuid
3+
import logging
34
from datetime import UTC, datetime
45

56
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, MetaData, String, Table, insert, select
@@ -10,49 +11,61 @@
1011
from ..app.core.security import get_password_hash
1112
from ..app.models.user import User
1213

14+
logging.basicConfig(level=logging.INFO)
15+
logger = logging.getLogger(__name__)
16+
1317

1418
async def create_first_user(session: AsyncSession) -> None:
15-
name = settings.ADMIN_NAME
16-
email = settings.ADMIN_EMAIL
17-
username = settings.ADMIN_USERNAME
18-
hashed_password = get_password_hash(settings.ADMIN_PASSWORD)
19+
try:
20+
name = settings.ADMIN_NAME
21+
email = settings.ADMIN_EMAIL
22+
username = settings.ADMIN_USERNAME
23+
hashed_password = get_password_hash(settings.ADMIN_PASSWORD)
24+
25+
query = select(User).filter_by(email=email)
26+
result = await session.execute(query)
27+
user = result.scalar_one_or_none()
1928

20-
query = select(User).filter_by(email=email)
21-
result = await session.execute(query)
22-
user = result.scalar_one_or_none()
29+
if user is None:
30+
metadata = MetaData()
31+
user_table = Table(
32+
"user",
33+
metadata,
34+
Column("id", Integer, primary_key=True, autoincrement=True, nullable=False),
35+
Column("name", String(30), nullable=False),
36+
Column("username", String(20), nullable=False, unique=True, index=True),
37+
Column("email", String(50), nullable=False, unique=True, index=True),
38+
Column("hashed_password", String, nullable=False),
39+
Column("profile_image_url", String, default="https://profileimageurl.com"),
40+
Column("uuid", UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, unique=True),
41+
Column("created_at", DateTime(timezone=True), default=lambda: datetime.now(UTC), nullable=False),
42+
Column("updated_at", DateTime),
43+
Column("deleted_at", DateTime),
44+
Column("is_deleted", Boolean, default=False, index=True),
45+
Column("is_superuser", Boolean, default=False),
46+
Column("tier_id", Integer, ForeignKey("tier.id"), index=True),
47+
)
2348

24-
if user is None:
25-
metadata = MetaData()
26-
user_table = Table(
27-
"user",
28-
metadata,
29-
Column("id", Integer, primary_key=True, autoincrement=True, nullable=False),
30-
Column("name", String(30), nullable=False),
31-
Column("username", String(20), nullable=False, unique=True, index=True),
32-
Column("email", String(50), nullable=False, unique=True, index=True),
33-
Column("hashed_password", String, nullable=False),
34-
Column("profile_image_url", String, default="https://profileimageurl.com"),
35-
Column("uuid", UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, unique=True),
36-
Column("created_at", DateTime(timezone=True), default=lambda: datetime.now(UTC), nullable=False),
37-
Column("updated_at", DateTime),
38-
Column("deleted_at", DateTime),
39-
Column("is_deleted", Boolean, default=False, index=True),
40-
Column("is_superuser", Boolean, default=False),
41-
Column("tier_id", Integer, ForeignKey("tier.id"), index=True),
42-
)
49+
data = {
50+
"name": name,
51+
"email": email,
52+
"username": username,
53+
"hashed_password": hashed_password,
54+
"is_superuser": True,
55+
}
4356

44-
data = {
45-
"name": name,
46-
"email": email,
47-
"username": username,
48-
"hashed_password": hashed_password,
49-
"is_superuser": True,
50-
}
57+
stmt = insert(user_table).values(data)
58+
async with async_engine.connect() as conn:
59+
await conn.execute(stmt)
60+
await conn.commit()
5161

52-
stmt = insert(user_table).values(data)
53-
async with async_engine.connect() as conn:
54-
await conn.execute(stmt)
55-
await conn.commit()
62+
logger.info(f"Admin user {username} created successfully.")
63+
64+
else:
65+
logger.info(f"Admin user {username} already exists.")
66+
67+
except Exception as e:
68+
logger.error(f"Error creating admin user: {e}")
5669

5770

5871
async def main():

src/scripts/create_first_tier.py

+21-10
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
11
import asyncio
2+
import logging
23

34
from sqlalchemy import select
45

56
from ..app.core.config import config
67
from ..app.core.db.database import AsyncSession, local_session
78
from ..app.models.tier import Tier
89

10+
logging.basicConfig(level=logging.INFO)
11+
logger = logging.getLogger(__name__)
912

10-
async def create_first_tier(session: AsyncSession) -> None:
11-
tier_name = config("TIER_NAME", default="free")
12-
13-
query = select(Tier).where(Tier.name == tier_name)
14-
result = await session.execute(query)
15-
tier = result.scalar_one_or_none()
1613

17-
if tier is None:
18-
session.add(Tier(name=tier_name))
19-
20-
await session.commit()
14+
async def create_first_tier(session: AsyncSession) -> None:
15+
try:
16+
tier_name = config("TIER_NAME", default="free")
17+
18+
query = select(Tier).where(Tier.name == tier_name)
19+
result = await session.execute(query)
20+
tier = result.scalar_one_or_none()
21+
22+
if tier is None:
23+
session.add(Tier(name=tier_name))
24+
await session.commit()
25+
logger.info(f"Tier '{tier_name}' created successfully.")
26+
27+
else:
28+
logger.info(f"Tier '{tier_name}' already exists.")
29+
30+
except Exception as e:
31+
logger.error(f"Error creating tier: {e}")
2132

2233

2334
async def main():

0 commit comments

Comments
 (0)