only show agents that have no store listing

This commit is contained in:
SwiftyOS
2024-11-29 15:45:59 +01:00
parent 3ccf0138b1
commit cd9c4218b0
9 changed files with 56 additions and 33 deletions

View File

@@ -71,6 +71,7 @@ app.include_router(
backend.server.v2.store.routes.router, tags=["v2"], prefix="/api/store"
)
@app.get(path="/health", tags=["health"], dependencies=[])
async def health():
return {"status": "healthy"}

View File

@@ -1,4 +1,5 @@
import logging
from datetime import datetime
import prisma.enums
import prisma.errors
@@ -8,8 +9,6 @@ import prisma.types
import backend.server.v2.store.exceptions
import backend.server.v2.store.model
from datetime import datetime
logger = logging.getLogger(__name__)
@@ -389,7 +388,7 @@ async def create_store_submission(
"description": description,
"categories": categories,
"subHeading": sub_heading,
}
}
},
}
)
@@ -563,18 +562,30 @@ async def get_my_agents(
try:
agents_with_max_version = await prisma.models.AgentGraph.prisma().find_many(
where=prisma.types.AgentGraphWhereInput(userId=user_id),
where=prisma.types.AgentGraphWhereInput(
userId=user_id, StoreListing={"none": {"isDeleted": False}}
),
order=[{"version": "desc"}],
distinct=["id"],
skip=(page - 1) * page_size,
take=page_size,
)
total = len(await prisma.models.AgentGraph.prisma().find_many(
where=prisma.types.AgentGraphWhereInput(userId=user_id),
order=[{"version": "desc"}],
distinct=["id"],
))
# store_listings = await prisma.models.StoreListing.prisma().find_many(
# where=prisma.types.StoreListingWhereInput(
# isDeleted=False,
# ),
# )
total = len(
await prisma.models.AgentGraph.prisma().find_many(
where=prisma.types.AgentGraphWhereInput(
userId=user_id, StoreListing={"none": {"isDeleted": False}}
),
order=[{"version": "desc"}],
distinct=["id"],
)
)
total_pages = (total + page_size - 1) // page_size

View File

@@ -2,9 +2,9 @@ import logging
import os
import uuid
import dotenv
import fastapi
from google.cloud import storage
import dotenv
import backend.server.v2.store.exceptions
@@ -76,10 +76,7 @@ async def upload_media(user_id: str, file: fastapi.UploadFile) -> str:
blob.content_type = content_type
file_bytes = await file.read()
blob.upload_from_string(
file_bytes,
content_type=content_type
)
blob.upload_from_string(file_bytes, content_type=content_type)
public_url = blob.public_url

View File

@@ -19,16 +19,19 @@ class Pagination(pydantic.BaseModel):
description="Number of items per page.", examples=[25]
)
class MyAgent(pydantic.BaseModel):
agent_id: str
agent_version: int
agent_name: str
last_edited: datetime.datetime
class MyAgentsResponse(pydantic.BaseModel):
agents: list[MyAgent]
pagination: Pagination
class StoreAgent(pydantic.BaseModel):
slug: str
agent_name: str
@@ -85,6 +88,7 @@ class CreatorDetails(pydantic.BaseModel):
agent_runs: int
top_categories: list[str]
class Profile(pydantic.BaseModel):
name: str
username: str
@@ -92,6 +96,7 @@ class Profile(pydantic.BaseModel):
links: list[str]
avatar_url: str
class StoreSubmission(pydantic.BaseModel):
name: str
slug: str

View File

@@ -226,12 +226,14 @@ async def get_creator(username: str) -> backend.server.v2.store.model.CreatorDet
############# Store Submissions ###############
############################################
@router.get(
"/myagents",
tags=["store", "private"],
dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)],
"/myagents",
tags=["store", "private"],
dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)],
)
async def get_my_agents(
user_id: typing.Annotated[str, fastapi.Depends(autogpt_libs.auth.depends.get_user_id)]
user_id: typing.Annotated[
str, fastapi.Depends(autogpt_libs.auth.depends.get_user_id)
]
) -> backend.server.v2.store.model.MyAgentsResponse:
try:
agents = await backend.server.v2.store.db.get_my_agents(user_id)
@@ -240,6 +242,7 @@ async def get_my_agents(
logger.exception("Exception occurred whilst getting my agents")
raise
@router.get(
"/submissions",
tags=["store", "private"],

View File

@@ -45,6 +45,7 @@ def get_image():
url = faker.image_url()
return url
async def main():
db = Prisma()
await db.connect()

View File

@@ -56,8 +56,8 @@ export default async function Page({
<BreadCrumbs items={breadcrumbs} />
<div className="mt-4 flex flex-col items-start gap-4 sm:mt-6 sm:gap-6 md:mt-8 md:flex-row md:gap-8">
<div className="w-full md:w-auto md:shrink-0">
<AgentInfo
<div className="w-full md:w-auto md:shrink-0">
<AgentInfo
name={agent.agent_name}
creator={agent.creator}
shortDescription={agent.description}

View File

@@ -14,15 +14,18 @@ const SchemaTooltip: React.FC<{ description?: string }> = ({ description }) => {
<TooltipProvider delayDuration={400}>
<Tooltip>
<TooltipTrigger asChild>
<Info className="rounded-full p-1 hover:bg-gray-300 dark:hover:bg-gray-700" size={24} />
<Info
className="rounded-full p-1 hover:bg-gray-300 dark:hover:bg-gray-700"
size={24}
/>
</TooltipTrigger>
<TooltipContent className="tooltip-content max-w-xs bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100">
<TooltipContent className="tooltip-content max-w-xs bg-white text-gray-900 dark:bg-gray-800 dark:text-gray-100">
<ReactMarkdown
components={{
a: ({ node, ...props }) => (
<a
target="_blank"
className="text-blue-400 dark:text-blue-300 underline"
className="text-blue-400 underline dark:text-blue-300"
{...props}
/>
),

View File

@@ -60,17 +60,19 @@ export const PublishAgentPopout: React.FC<PublishAgentPopoutProps> = ({
);
React.useEffect(() => {
const loadMyAgents = async () => {
try {
const response = await api.getMyAgents();
setMyAgents(response);
} catch (error) {
console.error("Failed to load my agents:", error);
}
};
if (open) {
const loadMyAgents = async () => {
try {
const response = await api.getMyAgents();
setMyAgents(response);
} catch (error) {
console.error("Failed to load my agents:", error);
}
};
loadMyAgents();
}, []);
loadMyAgents();
}
}, [open]);
const handleClose = () => {
setStep("select");