diff --git a/engineapi/alembic/versions/71e888082a6d_leaderboard_metadata.py b/engineapi/alembic/versions/71e888082a6d_leaderboard_metadata.py index da9fa9d1..43ef9d0c 100644 --- a/engineapi/alembic/versions/71e888082a6d_leaderboard_metadata.py +++ b/engineapi/alembic/versions/71e888082a6d_leaderboard_metadata.py @@ -33,10 +33,6 @@ def upgrade(): "wallet_connect", sa.Boolean(), nullable=False, server_default="false" ), ) - op.add_column( - "leaderboards", - sa.Column("public", sa.Boolean(), nullable=False, server_default="true"), - ) op.add_column( "leaderboards", sa.Column( @@ -52,7 +48,6 @@ def upgrade(): def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.drop_column("leaderboards", "columns_names") - op.drop_column("leaderboards", "public") op.drop_column("leaderboards", "wallet_connect") op.drop_column("leaderboards", "blockchain_ids") # ### end Alembic commands ### diff --git a/engineapi/engineapi/actions.py b/engineapi/engineapi/actions.py index d74e8c58..1d1cd12d 100644 --- a/engineapi/engineapi/actions.py +++ b/engineapi/engineapi/actions.py @@ -1284,9 +1284,8 @@ def create_leaderboard( title: str, description: Optional[str], token: Optional[Union[uuid.UUID, str]] = None, - public: bool = False, wallet_connect: bool = False, - blockchain_ids: Optional[List[int]] = None, + blockchain_ids: List[int] = [], columns_names: Optional[Dict[str, str]] = {}, ) -> Leaderboard: """ @@ -1299,10 +1298,12 @@ def create_leaderboard( if not token: token = uuid.UUID(MOONSTREAM_ADMIN_ACCESS_TOKEN) try: + # deduplicate and sort + blockchain_ids = sorted(list(set(blockchain_ids))) + leaderboard = Leaderboard( title=title, description=description, - public=public, wallet_connect=wallet_connect, blockchain_ids=blockchain_ids, columns_names=columns_names, @@ -1365,7 +1366,6 @@ def update_leaderboard( leaderboard_id: uuid.UUID, title: Optional[str], description: Optional[str], - public: Optional[bool], wallet_connect: Optional[bool], blockchain_ids: Optional[List[int]], columns_names: Optional[Dict[str, str]], @@ -1382,12 +1382,13 @@ def update_leaderboard( leaderboard.title = title if description is not None: leaderboard.description = description - if public is not None: - leaderboard.public = public if wallet_connect is not None: leaderboard.wallet_connect = wallet_connect if blockchain_ids is not None: + # deduplicate and sort + blockchain_ids = sorted(list(set(blockchain_ids))) leaderboard.blockchain_ids = blockchain_ids + if columns_names is not None: columns_names = get_default_columns_names(columns_names) leaderboard.columns_names = columns_names @@ -1401,7 +1402,7 @@ def get_leaderboard_by_id(db_session: Session, leaderboard_id) -> Leaderboard: """ Get the leaderboard by id """ - return db_session.query(Leaderboard).filter(Leaderboard.id == leaderboard_id).filter(Leaderboard.public == True).one() # type: ignore + return db_session.query(Leaderboard).filter(Leaderboard.id == leaderboard_id).one() # type: ignore def get_leaderboard_by_title(db_session: Session, title) -> Leaderboard: diff --git a/engineapi/engineapi/data.py b/engineapi/engineapi/data.py index 9fffad0b..4ce5f07c 100644 --- a/engineapi/engineapi/data.py +++ b/engineapi/engineapi/data.py @@ -380,10 +380,9 @@ class Leaderboard(BaseModel): title: str description: Optional[str] = None resource_id: Optional[UUID] = None - public: Optional[bool] = False - wallet_connect: Optional[bool] = False - blockchain_ids: Optional[List[int]] = None - columns_names: Optional[Dict[str, str]] = None + wallet_connect: bool = False + blockchain_ids: List[int] = Field(default_factory=list) + columns_names: Dict[str, str] = Field(default_factory=dict) created_at: datetime updated_at: datetime @@ -399,10 +398,9 @@ class LeaderboardInfoResponse(BaseModel): class LeaderboardCreateRequest(BaseModel): title: str description: Optional[str] = None - public: Optional[bool] = False - wallet_connect: Optional[bool] = False - blockchain_ids: Optional[List[int]] = None - columns_names: Optional[Dict[str, str]] = None + wallet_connect: bool = False + blockchain_ids: List[int] = Field(default_factory=list) + columns_names: Dict[str, str] = Field(default_factory=dict) class LeaderboardCreatedResponse(BaseModel): @@ -410,10 +408,9 @@ class LeaderboardCreatedResponse(BaseModel): title: str description: Optional[str] = None resource_id: Optional[UUID] = None - public: Optional[bool] = False - wallet_connect: Optional[bool] = False - blockchain_ids: Optional[List[int]] = None - columns_names: Optional[Dict[str, str]] = None + wallet_connect: bool = False + blockchain_ids: List[int] = Field(default_factory=list) + columns_names: Dict[str, str] = Field(default_factory=dict) created_at: datetime updated_at: datetime @@ -426,10 +423,9 @@ class LeaderboardUpdatedResponse(BaseModel): title: str description: Optional[str] = None resource_id: Optional[UUID] = None - public: Optional[bool] = False - wallet_connect: Optional[bool] = False - blockchain_ids: Optional[List[int]] = None - columns_names: Optional[Dict[str, str]] = None + wallet_connect: bool = False + blockchain_ids: List[int] = Field(default_factory=list) + columns_names: Dict[str, str] = Field(default_factory=dict) created_at: datetime updated_at: datetime @@ -440,10 +436,9 @@ class LeaderboardUpdatedResponse(BaseModel): class LeaderboardUpdateRequest(BaseModel): title: Optional[str] = None description: Optional[str] = None - public: Optional[bool] = False - wallet_connect: Optional[bool] = False - blockchain_ids: Optional[List[int]] = None - columns_names: Optional[Dict[str, str]] = None + wallet_connect: bool = False + blockchain_ids: List[int] = Field(default_factory=list) + columns_names: Dict[str, str] = Field(default_factory=dict) class LeaderboardDeletedResponse(BaseModel): @@ -451,10 +446,9 @@ class LeaderboardDeletedResponse(BaseModel): title: str description: Optional[str] = None resource_id: Optional[UUID] = None - public: Optional[bool] = False - wallet_connect: Optional[bool] = False - blockchain_ids: Optional[List[int]] = None - columns_names: Optional[Dict[str, str]] = None + wallet_connect: bool = False + blockchain_ids: List[int] = Field(default_factory=list) + columns_names: Dict[str, str] = Field(default_factory=dict) created_at: datetime updated_at: datetime diff --git a/engineapi/engineapi/models.py b/engineapi/engineapi/models.py index c786ea5c..b5651247 100644 --- a/engineapi/engineapi/models.py +++ b/engineapi/engineapi/models.py @@ -335,7 +335,6 @@ class CallRequest(Base): class Leaderboard(Base): # type: ignore __tablename__ = "leaderboards" - # __table_args__ = (UniqueConstraint("dropper_contract_id", "address"),) id = Column( UUID(as_uuid=True), @@ -350,7 +349,6 @@ class Leaderboard(Base): # type: ignore blockchain_ids = Column(ARRAY(Integer), nullable=False, default=[]) wallet_connect = Column(Boolean, default=False, nullable=False) - public = Column(Boolean, default=False, nullable=False) columns_names = Column(JSONB, nullable=False, default={}) created_at = Column( DateTime(timezone=True), server_default=utcnow(), nullable=False diff --git a/engineapi/engineapi/routes/leaderboard.py b/engineapi/engineapi/routes/leaderboard.py index 5af65f9a..d1b46bea 100644 --- a/engineapi/engineapi/routes/leaderboard.py +++ b/engineapi/engineapi/routes/leaderboard.py @@ -175,7 +175,6 @@ async def create_leaderboard( title=leaderboard.title, description=leaderboard.description, token=token, - public=leaderboard.public, wallet_connect=leaderboard.wallet_connect, blockchain_ids=leaderboard.blockchain_ids, columns_names=leaderboard.columns_names, @@ -198,7 +197,6 @@ async def create_leaderboard( title=created_leaderboard.title, # type: ignore description=created_leaderboard.description, # type: ignore resource_id=created_leaderboard.resource_id, # type: ignore - public=created_leaderboard.public, # type: ignore wallet_connect=created_leaderboard.wallet_connect, # type: ignore blockchain_ids=created_leaderboard.blockchain_ids, # type: ignore columns_names=created_leaderboard.columns_names, # type: ignore @@ -247,7 +245,6 @@ async def update_leaderboard( leaderboard_id=leaderboard_id, title=leaderboard.title, description=leaderboard.description, - public=leaderboard.public, wallet_connect=leaderboard.wallet_connect, blockchain_ids=leaderboard.blockchain_ids, columns_names=leaderboard.columns_names, @@ -268,7 +265,6 @@ async def update_leaderboard( title=updated_leaderboard.title, # type: ignore description=updated_leaderboard.description, # type: ignore resource_id=updated_leaderboard.resource_id, # type: ignore - public=updated_leaderboard.public, # type: ignore wallet_connect=updated_leaderboard.wallet_connect, # type: ignore blockchain_ids=updated_leaderboard.blockchain_ids, # type: ignore columns_names=updated_leaderboard.columns_names, # type: ignore @@ -332,7 +328,6 @@ async def delete_leaderboard( title=deleted_leaderboard.title, # type: ignore description=deleted_leaderboard.description, # type: ignore resource_id=deleted_leaderboard.resource_id, # type: ignore - public=deleted_leaderboard.public, # type: ignore wallet_connect=deleted_leaderboard.wallet_connect, # type: ignore blockchain_ids=deleted_leaderboard.blockchain_ids, # type: ignore columns_names=deleted_leaderboard.columns_names, # type: ignore @@ -374,7 +369,6 @@ async def get_leaderboards( title=leaderboard.title, # type: ignore description=leaderboard.description, # type: ignore resource_id=leaderboard.resource_id, # type: ignore - public=leaderboard.public, # type: ignore wallet_connect=leaderboard.wallet_connect, # type: ignore blockchain_ids=leaderboard.blockchain_ids, # type: ignore columns_names=leaderboard.columns_names, # type: ignore