Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fastapi_radar/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
from .radar import Radar
from .background import track_background_task

__version__ = "0.3.2"
__version__ = "0.3.3"
__all__ = ["Radar", "track_background_task"]
28 changes: 15 additions & 13 deletions fastapi_radar/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class CapturedRequest(Base):
duration_ms = Column(Float)
client_ip = Column(String(50))
created_at = Column(
DateTime, default=lambda: datetime.now(timezone.utc), index=True
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), index=True

@cubic-dev-ai cubic-dev-ai Bot Nov 11, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The change to DateTime(timezone=True) does not work for the MySQL backend, contrary to the PR description. The SQLAlchemy documentation confirms the timezone flag is ignored by the MySQL dialect, meaning the original bug of storing naive datetimes will persist on MySQL deployments.

Prompt for AI agents
Address the following comment on fastapi_radar/models.py at line 44:

<comment>The change to `DateTime(timezone=True)` does not work for the MySQL backend, contrary to the PR description. The SQLAlchemy documentation confirms the `timezone` flag is ignored by the MySQL dialect, meaning the original bug of storing naive datetimes will persist on MySQL deployments.</comment>

<file context>
@@ -41,7 +41,7 @@ class CapturedRequest(Base):
     client_ip = Column(String(50))
     created_at = Column(
-        DateTime, default=lambda: datetime.now(timezone.utc), index=True
+        DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), index=True
     )
 
</file context>
Fix with Cubic

)

queries = relationship(
Expand Down Expand Up @@ -71,7 +71,7 @@ class CapturedQuery(Base):
rows_affected = Column(Integer)
connection_name = Column(String(100))
created_at = Column(
DateTime, default=lambda: datetime.now(timezone.utc), index=True
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), index=True
)

request = relationship(
Expand All @@ -92,7 +92,7 @@ class CapturedException(Base):
exception_value = Column(Text)
traceback = Column(Text, nullable=False)
created_at = Column(
DateTime, default=lambda: datetime.now(timezone.utc), index=True
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), index=True
)

request = relationship(
Expand All @@ -111,15 +111,15 @@ class Trace(Base):
service_name = Column(String(100), index=True)
operation_name = Column(String(200))
start_time = Column(
DateTime, default=lambda: datetime.now(timezone.utc), index=True
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), index=True
)
end_time = Column(DateTime)
end_time = Column(DateTime(timezone=True))
duration_ms = Column(Float)
span_count = Column(Integer, default=0)
status = Column(String(20), default="ok")
tags = Column(JSON)
created_at = Column(
DateTime, default=lambda: datetime.now(timezone.utc), index=True
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), index=True
)

spans = relationship(
Expand All @@ -139,14 +139,14 @@ class Span(Base):
operation_name = Column(String(200), nullable=False)
service_name = Column(String(100), index=True)
span_kind = Column(String(20), default="server")
start_time = Column(DateTime, nullable=False, index=True)
end_time = Column(DateTime)
start_time = Column(DateTime(timezone=True), nullable=False, index=True)
end_time = Column(DateTime(timezone=True))
duration_ms = Column(Float)
status = Column(String(20), default="ok")
tags = Column(JSON)
logs = Column(JSON)
created_at = Column(
DateTime, default=lambda: datetime.now(timezone.utc), index=True
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), index=True
)

trace = relationship(
Expand All @@ -166,7 +166,9 @@ class SpanRelation(Base):
parent_span_id = Column(String(16), index=True)
child_span_id = Column(String(16), index=True)
depth = Column(Integer, default=0)
created_at = Column(DateTime, default=lambda: datetime.now(timezone.utc))
created_at = Column(
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)
)


class BackgroundTask(Base):
Expand All @@ -181,10 +183,10 @@ class BackgroundTask(Base):
status = Column(
String(20), default="pending", index=True
) # pending, running, completed, failed
start_time = Column(DateTime, index=True)
end_time = Column(DateTime)
start_time = Column(DateTime(timezone=True), index=True)
end_time = Column(DateTime(timezone=True))
duration_ms = Column(Float)
error = Column(Text)
created_at = Column(
DateTime, default=lambda: datetime.now(timezone.utc), index=True
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), index=True
)
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "fastapi-radar"
version = "0.3.2"
version = "0.3.3"
description = "A debugging dashboard for FastAPI applications with real-time monitoring"
readme = "README.md"
requires-python = ">=3.9"
Expand Down
Binary file modified radar.duckdb
Binary file not shown.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

setup(
name="fastapi-radar",
version="0.3.2",
version="0.3.3",
author="Arif Dogan",
author_email="me@arif.sh",
description=(
Expand Down