kopia lustrzana https://github.com/bugout-dev/moonstream
Add migration and endpoints changes.
rodzic
2c49f975e8
commit
949f6c4905
|
@ -0,0 +1,56 @@
|
|||
"""leaderboard metadata
|
||||
|
||||
Revision ID: e86bb1230bca
|
||||
Revises: 040f2dfde5a5
|
||||
Create Date: 2023-11-09 16:43:21.553490
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "e86bb1230bca"
|
||||
down_revision = "040f2dfde5a5"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column(
|
||||
"leaderboards",
|
||||
sa.Column(
|
||||
"blockchain_ids",
|
||||
sa.ARRAY(sa.Integer()),
|
||||
nullable=False,
|
||||
server_default="{}",
|
||||
),
|
||||
)
|
||||
op.add_column(
|
||||
"leaderboards",
|
||||
sa.Column("show_connect", sa.Boolean(), nullable=False, server_default="false"),
|
||||
)
|
||||
op.add_column(
|
||||
"leaderboards",
|
||||
sa.Column("public", sa.Boolean(), nullable=False, server_default="false"),
|
||||
)
|
||||
op.add_column(
|
||||
"leaderboards",
|
||||
sa.Column(
|
||||
"columns_names",
|
||||
postgresql.JSONB(astext_type=sa.Text()),
|
||||
nullable=False,
|
||||
server_default="{}",
|
||||
),
|
||||
)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column("leaderboards", "columns_names")
|
||||
op.drop_column("leaderboards", "public")
|
||||
op.drop_column("leaderboards", "show_connect")
|
||||
op.drop_column("leaderboards", "blockchain_ids")
|
||||
# ### end Alembic commands ###
|
|
@ -1256,6 +1256,10 @@ def create_leaderboard(
|
|||
title: str,
|
||||
description: Optional[str],
|
||||
token: Optional[Union[uuid.UUID, str]] = None,
|
||||
public: bool = False,
|
||||
show_connect: bool = False,
|
||||
blockchain_ids: Optional[List[int]] = None,
|
||||
columns_names: Optional[Dict[str, str]] = None,
|
||||
) -> Leaderboard:
|
||||
"""
|
||||
Create a leaderboard
|
||||
|
@ -1264,7 +1268,14 @@ def create_leaderboard(
|
|||
if not token:
|
||||
token = uuid.UUID(MOONSTREAM_ADMIN_ACCESS_TOKEN)
|
||||
try:
|
||||
leaderboard = Leaderboard(title=title, description=description)
|
||||
leaderboard = Leaderboard(
|
||||
title=title,
|
||||
description=description,
|
||||
public=public,
|
||||
show_connect=show_connect,
|
||||
blockchain_ids=blockchain_ids,
|
||||
columns_names=columns_names,
|
||||
)
|
||||
db_session.add(leaderboard)
|
||||
db_session.commit()
|
||||
|
||||
|
@ -1323,6 +1334,10 @@ def update_leaderboard(
|
|||
leaderboard_id: uuid.UUID,
|
||||
title: Optional[str],
|
||||
description: Optional[str],
|
||||
public: Optional[bool],
|
||||
show_connect: Optional[bool],
|
||||
blockchain_ids: Optional[List[int]],
|
||||
columns_names: Optional[Dict[str, str]],
|
||||
) -> Leaderboard:
|
||||
"""
|
||||
Update a leaderboard
|
||||
|
@ -1336,6 +1351,14 @@ def update_leaderboard(
|
|||
leaderboard.title = title
|
||||
if description is not None:
|
||||
leaderboard.description = description
|
||||
if public is not None:
|
||||
leaderboard.public = public
|
||||
if show_connect is not None:
|
||||
leaderboard.show_connect = show_connect
|
||||
if blockchain_ids is not None:
|
||||
leaderboard.blockchain_ids = blockchain_ids
|
||||
if columns_names is not None:
|
||||
leaderboard.columns_names = columns_names
|
||||
|
||||
db_session.commit()
|
||||
|
||||
|
@ -1346,7 +1369,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).one() # type: ignore
|
||||
return db_session.query(Leaderboard).filter(Leaderboard.id == leaderboard_id).filter(leaderboard.public == True).one() # type: ignore
|
||||
|
||||
|
||||
def get_leaderboard_by_title(db_session: Session, title) -> Leaderboard:
|
||||
|
|
|
@ -370,6 +370,10 @@ class Leaderboard(BaseModel):
|
|||
title: str
|
||||
description: Optional[str] = None
|
||||
resource_id: Optional[UUID] = None
|
||||
public: Optional[bool] = False
|
||||
show_connect: Optional[bool] = False
|
||||
blockchain_ids: Optional[List[int]] = None
|
||||
columns_names: Optional[Dict[str, str]] = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
@ -385,6 +389,10 @@ class LeaderboardInfoResponse(BaseModel):
|
|||
class LeaderboardCreateRequest(BaseModel):
|
||||
title: str
|
||||
description: Optional[str] = None
|
||||
public: Optional[bool] = False
|
||||
show_connect: Optional[bool] = False
|
||||
blockchain_ids: Optional[List[int]] = None
|
||||
columns_names: Optional[Dict[str, str]] = None
|
||||
|
||||
|
||||
class LeaderboardCreatedResponse(BaseModel):
|
||||
|
@ -392,6 +400,10 @@ class LeaderboardCreatedResponse(BaseModel):
|
|||
title: str
|
||||
description: Optional[str] = None
|
||||
resource_id: Optional[UUID] = None
|
||||
public: Optional[bool] = False
|
||||
show_connect: Optional[bool] = False
|
||||
blockchain_ids: Optional[List[int]] = None
|
||||
columns_names: Optional[Dict[str, str]] = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
@ -404,6 +416,10 @@ class LeaderboardUpdatedResponse(BaseModel):
|
|||
title: str
|
||||
description: Optional[str] = None
|
||||
resource_id: Optional[UUID] = None
|
||||
public: Optional[bool] = False
|
||||
show_connect: Optional[bool] = False
|
||||
blockchain_ids: Optional[List[int]] = None
|
||||
columns_names: Optional[Dict[str, str]] = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
@ -414,6 +430,10 @@ class LeaderboardUpdatedResponse(BaseModel):
|
|||
class LeaderboardUpdateRequest(BaseModel):
|
||||
title: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
public: Optional[bool] = False
|
||||
show_connect: Optional[bool] = False
|
||||
blockchain_ids: Optional[List[int]] = None
|
||||
columns_names: Optional[Dict[str, str]] = None
|
||||
|
||||
|
||||
class LeaderboardDeletedResponse(BaseModel):
|
||||
|
@ -421,6 +441,10 @@ class LeaderboardDeletedResponse(BaseModel):
|
|||
title: str
|
||||
description: Optional[str] = None
|
||||
resource_id: Optional[UUID] = None
|
||||
public: Optional[bool] = False
|
||||
show_connect: Optional[bool] = False
|
||||
blockchain_ids: Optional[List[int]] = None
|
||||
columns_names: Optional[Dict[str, str]] = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import uuid
|
||||
|
||||
from sqlalchemy import (
|
||||
ARRAY,
|
||||
DECIMAL,
|
||||
VARCHAR,
|
||||
BigInteger,
|
||||
|
@ -346,6 +347,10 @@ class Leaderboard(Base): # type: ignore
|
|||
title = Column(VARCHAR(128), nullable=False)
|
||||
description = Column(String, nullable=True)
|
||||
resource_id = Column(UUID(as_uuid=True), nullable=True, index=True)
|
||||
blockchain_ids = Column(ARRAY(Integer), nullable=False, default=[])
|
||||
show_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
|
||||
)
|
||||
|
|
|
@ -114,6 +114,7 @@ async def leaderboard(
|
|||
leaderboard_positions = actions.get_leaderboard_positions(
|
||||
db_session, leaderboard_id, limit, offset
|
||||
)
|
||||
|
||||
result = [
|
||||
data.LeaderboardPosition(
|
||||
address=position.address,
|
||||
|
@ -140,7 +141,6 @@ async def create_leaderboard(
|
|||
Authorization: str = AuthHeader,
|
||||
) -> data.LeaderboardCreatedResponse:
|
||||
"""
|
||||
|
||||
Create leaderboard.
|
||||
"""
|
||||
|
||||
|
@ -152,6 +152,10 @@ async def create_leaderboard(
|
|||
title=leaderboard.title,
|
||||
description=leaderboard.description,
|
||||
token=token,
|
||||
public=leaderboard.public,
|
||||
show_connect=leaderboard.show_connect,
|
||||
blockchain_ids=leaderboard.blockchain_ids,
|
||||
columns_names=leaderboard.columns_names,
|
||||
)
|
||||
except actions.LeaderboardCreateError as e:
|
||||
logger.error(f"Error while creating leaderboard: {e}")
|
||||
|
@ -171,6 +175,10 @@ 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
|
||||
show_connect=created_leaderboard.show_connect, # type: ignore
|
||||
blockchain_ids=created_leaderboard.blockchain_ids, # type: ignore
|
||||
columns_names=created_leaderboard.columns_names, # type: ignore
|
||||
created_at=created_leaderboard.created_at, # type: ignore
|
||||
updated_at=created_leaderboard.updated_at, # type: ignore
|
||||
)
|
||||
|
@ -216,6 +224,10 @@ async def update_leaderboard(
|
|||
leaderboard_id=leaderboard_id,
|
||||
title=leaderboard.title,
|
||||
description=leaderboard.description,
|
||||
public=leaderboard.public,
|
||||
show_connect=leaderboard.show_connect,
|
||||
blockchain_ids=leaderboard.blockchain_ids,
|
||||
columns_names=leaderboard.columns_names,
|
||||
)
|
||||
except actions.LeaderboardUpdateError as e:
|
||||
logger.error(f"Error while updating leaderboard: {e}")
|
||||
|
@ -233,6 +245,10 @@ 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
|
||||
show_connect=updated_leaderboard.show_connect, # type: ignore
|
||||
blockchain_ids=updated_leaderboard.blockchain_ids, # type: ignore
|
||||
columns_names=updated_leaderboard.columns_names, # type: ignore
|
||||
created_at=updated_leaderboard.created_at, # type: ignore
|
||||
updated_at=updated_leaderboard.updated_at, # type: ignore
|
||||
)
|
||||
|
@ -292,6 +308,11 @@ async def delete_leaderboard(
|
|||
id=deleted_leaderboard.id, # type: ignore
|
||||
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
|
||||
show_connect=deleted_leaderboard.show_connect, # type: ignore
|
||||
blockchain_ids=deleted_leaderboard.blockchain_ids, # type: ignore
|
||||
columns_names=deleted_leaderboard.columns_names, # type: ignore
|
||||
created_at=deleted_leaderboard.created_at, # type: ignore
|
||||
updated_at=deleted_leaderboard.updated_at, # type: ignore
|
||||
)
|
||||
|
@ -330,6 +351,10 @@ 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
|
||||
show_connect=leaderboard.show_connect, # type: ignore
|
||||
blockchain_ids=leaderboard.blockchain_ids, # type: ignore
|
||||
columns_names=leaderboard.columns_names, # type: ignore
|
||||
created_at=leaderboard.created_at, # type: ignore
|
||||
updated_at=leaderboard.updated_at, # type: ignore
|
||||
)
|
||||
|
|
Ładowanie…
Reference in New Issue