mirror of
https://github.com/wassname/Open-Assistant.git
synced 2026-06-27 16:10:30 +08:00
last_uddated for user_stats, swtich to timestamptz
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""switch to timestamp with tz
|
||||
|
||||
Revision ID: 7f0a28a156f4
|
||||
Revises: 0964ac95170d
|
||||
Create Date: 2023-01-19 21:53:01.107137
|
||||
|
||||
"""
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "7f0a28a156f4"
|
||||
down_revision = "0964ac95170d"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.alter_column(table_name="user_stats", column_name="modified_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="user_stats", column_name="base_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="journal_integration", column_name="last_run", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="message_embedding", column_name="created_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="message_reaction", column_name="created_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="message_toxicity", column_name="created_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="message", column_name="created_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="task", column_name="created_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="task", column_name="expiry_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="text_labels", column_name="created_date", type_=sa.DateTime(timezone=True))
|
||||
op.alter_column(table_name="user", column_name="created_date", type_=sa.DateTime(timezone=True))
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.alter_column(table_name="user_stats", column_name="modified_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="user_stats", column_name="base_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="journal_integration", column_name="last_run", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="message_embedding", column_name="created_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="message_reaction", column_name="created_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="message_toxicity", column_name="created_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="message", column_name="created_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="task", column_name="created_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="task", column_name="expiry_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="text_labels", column_name="created_date", type_=sa.DateTime(timezone=False))
|
||||
op.alter_column(table_name="user", column_name="created_date", type_=sa.DateTime(timezone=False))
|
||||
# ### end Alembic commands ###
|
||||
@@ -50,6 +50,6 @@ class JournalIntegration(SQLModel, table=True):
|
||||
)
|
||||
description: str = Field(max_length=512, primary_key=True)
|
||||
last_journal_id: Optional[UUID] = Field(foreign_key="journal.id", nullable=True)
|
||||
last_run: Optional[datetime] = Field(sa_column=sa.Column(sa.DateTime(), nullable=True))
|
||||
last_run: Optional[datetime] = Field(sa_column=sa.Column(sa.DateTime(timezone=True), nullable=True))
|
||||
last_error: Optional[str] = Field(nullable=True)
|
||||
next_run: Optional[datetime] = Field(nullable=True)
|
||||
|
||||
@@ -30,7 +30,9 @@ class Message(SQLModel, table=True):
|
||||
api_client_id: UUID = Field(nullable=False, foreign_key="api_client.id")
|
||||
frontend_message_id: str = Field(max_length=200, nullable=False)
|
||||
created_date: Optional[datetime] = Field(
|
||||
sa_column=sa.Column(sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp(), index=True)
|
||||
sa_column=sa.Column(
|
||||
sa.DateTime(timezone=True), nullable=False, server_default=sa.func.current_timestamp(), index=True
|
||||
)
|
||||
)
|
||||
payload_type: str = Field(nullable=False, max_length=200)
|
||||
payload: Optional[PayloadContainer] = Field(
|
||||
|
||||
@@ -17,5 +17,5 @@ class MessageEmbedding(SQLModel, table=True):
|
||||
|
||||
# In the case that the Message Embedding is created afterwards
|
||||
created_date: Optional[datetime] = Field(
|
||||
sa_column=sa.Column(sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp())
|
||||
sa_column=sa.Column(sa.DateTime(timezone=True), nullable=False, server_default=sa.func.current_timestamp())
|
||||
)
|
||||
|
||||
@@ -19,7 +19,9 @@ class MessageReaction(SQLModel, table=True):
|
||||
sa_column=sa.Column(pg.UUID(as_uuid=True), sa.ForeignKey("user.id"), nullable=False, primary_key=True)
|
||||
)
|
||||
created_date: Optional[datetime] = Field(
|
||||
sa_column=sa.Column(sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp(), index=True)
|
||||
sa_column=sa.Column(
|
||||
sa.DateTime(timezone=True), nullable=False, server_default=sa.func.current_timestamp(), index=True
|
||||
)
|
||||
)
|
||||
payload_type: str = Field(nullable=False, max_length=200)
|
||||
payload: PayloadContainer = Field(sa_column=sa.Column(payload_column_type(PayloadContainer), nullable=False))
|
||||
|
||||
@@ -20,5 +20,5 @@ class MessageToxicity(SQLModel, table=True):
|
||||
|
||||
# In the case that the Message Embedding is created afterwards
|
||||
created_date: Optional[datetime] = Field(
|
||||
sa_column=sa.Column(sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp())
|
||||
sa_column=sa.Column(sa.DateTime(timezone=True), nullable=False, server_default=sa.func.current_timestamp())
|
||||
)
|
||||
|
||||
@@ -20,9 +20,9 @@ class Task(SQLModel, table=True):
|
||||
),
|
||||
)
|
||||
created_date: Optional[datetime] = Field(
|
||||
sa_column=sa.Column(sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp()),
|
||||
sa_column=sa.Column(sa.DateTime(timezone=True), nullable=False, server_default=sa.func.current_timestamp()),
|
||||
)
|
||||
expiry_date: Optional[datetime] = Field(sa_column=sa.Column(sa.DateTime(), nullable=True))
|
||||
expiry_date: Optional[datetime] = Field(sa_column=sa.Column(sa.DateTime(timezone=True), nullable=True))
|
||||
user_id: Optional[UUID] = Field(nullable=True, foreign_key="user.id", index=True)
|
||||
payload_type: str = Field(nullable=False, max_length=200)
|
||||
payload: PayloadContainer = Field(sa_column=sa.Column(payload_column_type(PayloadContainer), nullable=False))
|
||||
|
||||
@@ -17,7 +17,9 @@ class TextLabels(SQLModel, table=True):
|
||||
)
|
||||
user_id: UUID = Field(sa_column=sa.Column(pg.UUID(as_uuid=True), sa.ForeignKey("user.id"), nullable=False))
|
||||
created_date: Optional[datetime] = Field(
|
||||
sa_column=sa.Column(sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp(), index=True),
|
||||
sa_column=sa.Column(
|
||||
sa.DateTime(timezone=True), nullable=False, server_default=sa.func.current_timestamp(), index=True
|
||||
),
|
||||
)
|
||||
api_client_id: UUID = Field(nullable=False, foreign_key="api_client.id")
|
||||
text: str = Field(nullable=False, max_length=2**16)
|
||||
|
||||
@@ -21,7 +21,7 @@ class User(SQLModel, table=True):
|
||||
auth_method: str = Field(nullable=False, max_length=128, default="local")
|
||||
display_name: str = Field(nullable=False, max_length=256)
|
||||
created_date: Optional[datetime] = Field(
|
||||
sa_column=sa.Column(sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp())
|
||||
sa_column=sa.Column(sa.DateTime(timezone=True), nullable=False, server_default=sa.func.current_timestamp())
|
||||
)
|
||||
api_client_id: UUID = Field(foreign_key="api_client.id")
|
||||
enabled: bool = Field(sa_column=sa.Column(sa.Boolean, nullable=False, server_default=sa.true()))
|
||||
|
||||
@@ -26,11 +26,11 @@ class UserStats(SQLModel, table=True):
|
||||
user_id: Optional[UUID] = Field(
|
||||
sa_column=sa.Column(pg.UUID(as_uuid=True), sa.ForeignKey("user.id"), primary_key=True)
|
||||
)
|
||||
base_date: Optional[datetime] = Field(sa_column=sa.Column(sa.DateTime(), nullable=True))
|
||||
base_date: Optional[datetime] = Field(sa_column=sa.Column(sa.DateTime(timezone=True), nullable=True))
|
||||
|
||||
leader_score: int = 0
|
||||
modified_date: Optional[datetime] = Field(
|
||||
sa_column=sa.Column(sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp())
|
||||
sa_column=sa.Column(sa.DateTime(timezone=True), nullable=False, server_default=sa.func.current_timestamp())
|
||||
)
|
||||
|
||||
rank: int = Field(nullable=True)
|
||||
|
||||
@@ -45,7 +45,11 @@ class UserStatsRepository:
|
||||
)
|
||||
|
||||
leaderboard = [_create_user_score(r) for r in self.session.exec(qry)]
|
||||
return LeaderboardStats(time_frame=time_frame.value, leaderboard=leaderboard)
|
||||
if len(leaderboard) > 0:
|
||||
last_update = max(x.modified_date for x in leaderboard)
|
||||
else:
|
||||
last_update = utcnow()
|
||||
return LeaderboardStats(time_frame=time_frame.value, leaderboard=leaderboard, last_updated=last_update)
|
||||
|
||||
def get_user_stats_all_time_frames(self, user_id: UUID) -> dict[str, UserScore | None]:
|
||||
qry = (
|
||||
|
||||
@@ -392,6 +392,7 @@ class UserScore(BaseModel):
|
||||
|
||||
class LeaderboardStats(BaseModel):
|
||||
time_frame: str
|
||||
last_updated: datetime
|
||||
leaderboard: List[UserScore]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user