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,
|
title: str,
|
||||||
description: Optional[str],
|
description: Optional[str],
|
||||||
token: Optional[Union[uuid.UUID, str]] = None,
|
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:
|
) -> Leaderboard:
|
||||||
"""
|
"""
|
||||||
Create a leaderboard
|
Create a leaderboard
|
||||||
|
@ -1264,7 +1268,14 @@ def create_leaderboard(
|
||||||
if not token:
|
if not token:
|
||||||
token = uuid.UUID(MOONSTREAM_ADMIN_ACCESS_TOKEN)
|
token = uuid.UUID(MOONSTREAM_ADMIN_ACCESS_TOKEN)
|
||||||
try:
|
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.add(leaderboard)
|
||||||
db_session.commit()
|
db_session.commit()
|
||||||
|
|
||||||
|
@ -1323,6 +1334,10 @@ def update_leaderboard(
|
||||||
leaderboard_id: uuid.UUID,
|
leaderboard_id: uuid.UUID,
|
||||||
title: Optional[str],
|
title: Optional[str],
|
||||||
description: Optional[str],
|
description: Optional[str],
|
||||||
|
public: Optional[bool],
|
||||||
|
show_connect: Optional[bool],
|
||||||
|
blockchain_ids: Optional[List[int]],
|
||||||
|
columns_names: Optional[Dict[str, str]],
|
||||||
) -> Leaderboard:
|
) -> Leaderboard:
|
||||||
"""
|
"""
|
||||||
Update a leaderboard
|
Update a leaderboard
|
||||||
|
@ -1336,6 +1351,14 @@ def update_leaderboard(
|
||||||
leaderboard.title = title
|
leaderboard.title = title
|
||||||
if description is not None:
|
if description is not None:
|
||||||
leaderboard.description = description
|
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()
|
db_session.commit()
|
||||||
|
|
||||||
|
@ -1346,7 +1369,7 @@ def get_leaderboard_by_id(db_session: Session, leaderboard_id) -> Leaderboard:
|
||||||
"""
|
"""
|
||||||
Get the leaderboard by id
|
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:
|
def get_leaderboard_by_title(db_session: Session, title) -> Leaderboard:
|
||||||
|
|
|
@ -370,6 +370,10 @@ class Leaderboard(BaseModel):
|
||||||
title: str
|
title: str
|
||||||
description: Optional[str] = None
|
description: Optional[str] = None
|
||||||
resource_id: Optional[UUID] = 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
|
created_at: datetime
|
||||||
updated_at: datetime
|
updated_at: datetime
|
||||||
|
|
||||||
|
@ -385,6 +389,10 @@ class LeaderboardInfoResponse(BaseModel):
|
||||||
class LeaderboardCreateRequest(BaseModel):
|
class LeaderboardCreateRequest(BaseModel):
|
||||||
title: str
|
title: str
|
||||||
description: 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 LeaderboardCreatedResponse(BaseModel):
|
class LeaderboardCreatedResponse(BaseModel):
|
||||||
|
@ -392,6 +400,10 @@ class LeaderboardCreatedResponse(BaseModel):
|
||||||
title: str
|
title: str
|
||||||
description: Optional[str] = None
|
description: Optional[str] = None
|
||||||
resource_id: Optional[UUID] = 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
|
created_at: datetime
|
||||||
updated_at: datetime
|
updated_at: datetime
|
||||||
|
|
||||||
|
@ -404,6 +416,10 @@ class LeaderboardUpdatedResponse(BaseModel):
|
||||||
title: str
|
title: str
|
||||||
description: Optional[str] = None
|
description: Optional[str] = None
|
||||||
resource_id: Optional[UUID] = 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
|
created_at: datetime
|
||||||
updated_at: datetime
|
updated_at: datetime
|
||||||
|
|
||||||
|
@ -414,6 +430,10 @@ class LeaderboardUpdatedResponse(BaseModel):
|
||||||
class LeaderboardUpdateRequest(BaseModel):
|
class LeaderboardUpdateRequest(BaseModel):
|
||||||
title: Optional[str] = None
|
title: Optional[str] = None
|
||||||
description: 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):
|
class LeaderboardDeletedResponse(BaseModel):
|
||||||
|
@ -421,6 +441,10 @@ class LeaderboardDeletedResponse(BaseModel):
|
||||||
title: str
|
title: str
|
||||||
description: Optional[str] = None
|
description: Optional[str] = None
|
||||||
resource_id: Optional[UUID] = 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
|
created_at: datetime
|
||||||
updated_at: datetime
|
updated_at: datetime
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from sqlalchemy import (
|
from sqlalchemy import (
|
||||||
|
ARRAY,
|
||||||
DECIMAL,
|
DECIMAL,
|
||||||
VARCHAR,
|
VARCHAR,
|
||||||
BigInteger,
|
BigInteger,
|
||||||
|
@ -346,6 +347,10 @@ class Leaderboard(Base): # type: ignore
|
||||||
title = Column(VARCHAR(128), nullable=False)
|
title = Column(VARCHAR(128), nullable=False)
|
||||||
description = Column(String, nullable=True)
|
description = Column(String, nullable=True)
|
||||||
resource_id = Column(UUID(as_uuid=True), nullable=True, index=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(
|
created_at = Column(
|
||||||
DateTime(timezone=True), server_default=utcnow(), nullable=False
|
DateTime(timezone=True), server_default=utcnow(), nullable=False
|
||||||
)
|
)
|
||||||
|
|
|
@ -114,6 +114,7 @@ async def leaderboard(
|
||||||
leaderboard_positions = actions.get_leaderboard_positions(
|
leaderboard_positions = actions.get_leaderboard_positions(
|
||||||
db_session, leaderboard_id, limit, offset
|
db_session, leaderboard_id, limit, offset
|
||||||
)
|
)
|
||||||
|
|
||||||
result = [
|
result = [
|
||||||
data.LeaderboardPosition(
|
data.LeaderboardPosition(
|
||||||
address=position.address,
|
address=position.address,
|
||||||
|
@ -140,7 +141,6 @@ async def create_leaderboard(
|
||||||
Authorization: str = AuthHeader,
|
Authorization: str = AuthHeader,
|
||||||
) -> data.LeaderboardCreatedResponse:
|
) -> data.LeaderboardCreatedResponse:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
Create leaderboard.
|
Create leaderboard.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -152,6 +152,10 @@ async def create_leaderboard(
|
||||||
title=leaderboard.title,
|
title=leaderboard.title,
|
||||||
description=leaderboard.description,
|
description=leaderboard.description,
|
||||||
token=token,
|
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:
|
except actions.LeaderboardCreateError as e:
|
||||||
logger.error(f"Error while creating leaderboard: {e}")
|
logger.error(f"Error while creating leaderboard: {e}")
|
||||||
|
@ -171,6 +175,10 @@ async def create_leaderboard(
|
||||||
title=created_leaderboard.title, # type: ignore
|
title=created_leaderboard.title, # type: ignore
|
||||||
description=created_leaderboard.description, # type: ignore
|
description=created_leaderboard.description, # type: ignore
|
||||||
resource_id=created_leaderboard.resource_id, # 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
|
created_at=created_leaderboard.created_at, # type: ignore
|
||||||
updated_at=created_leaderboard.updated_at, # type: ignore
|
updated_at=created_leaderboard.updated_at, # type: ignore
|
||||||
)
|
)
|
||||||
|
@ -216,6 +224,10 @@ async def update_leaderboard(
|
||||||
leaderboard_id=leaderboard_id,
|
leaderboard_id=leaderboard_id,
|
||||||
title=leaderboard.title,
|
title=leaderboard.title,
|
||||||
description=leaderboard.description,
|
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:
|
except actions.LeaderboardUpdateError as e:
|
||||||
logger.error(f"Error while updating leaderboard: {e}")
|
logger.error(f"Error while updating leaderboard: {e}")
|
||||||
|
@ -233,6 +245,10 @@ async def update_leaderboard(
|
||||||
title=updated_leaderboard.title, # type: ignore
|
title=updated_leaderboard.title, # type: ignore
|
||||||
description=updated_leaderboard.description, # type: ignore
|
description=updated_leaderboard.description, # type: ignore
|
||||||
resource_id=updated_leaderboard.resource_id, # 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
|
created_at=updated_leaderboard.created_at, # type: ignore
|
||||||
updated_at=updated_leaderboard.updated_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
|
id=deleted_leaderboard.id, # type: ignore
|
||||||
title=deleted_leaderboard.title, # type: ignore
|
title=deleted_leaderboard.title, # type: ignore
|
||||||
description=deleted_leaderboard.description, # 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
|
created_at=deleted_leaderboard.created_at, # type: ignore
|
||||||
updated_at=deleted_leaderboard.updated_at, # type: ignore
|
updated_at=deleted_leaderboard.updated_at, # type: ignore
|
||||||
)
|
)
|
||||||
|
@ -330,6 +351,10 @@ async def get_leaderboards(
|
||||||
title=leaderboard.title, # type: ignore
|
title=leaderboard.title, # type: ignore
|
||||||
description=leaderboard.description, # type: ignore
|
description=leaderboard.description, # type: ignore
|
||||||
resource_id=leaderboard.resource_id, # 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
|
created_at=leaderboard.created_at, # type: ignore
|
||||||
updated_at=leaderboard.updated_at, # type: ignore
|
updated_at=leaderboard.updated_at, # type: ignore
|
||||||
)
|
)
|
||||||
|
|
Ładowanie…
Reference in New Issue