From 130dc7ead6b084ac64a887633f4823e8770c72fd Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 23 Aug 2023 21:12:11 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(schemas.py):=20import=20ApiK?= =?UTF-8?q?eyRead=20from=20api=5Fkey=20module=20to=20fix=20missing=20impor?= =?UTF-8?q?t=20error=20=F0=9F=94=A7=20fix(models/=5F=5Finit=5F=5F.py):=20a?= =?UTF-8?q?dd=20ApiKey=20to=20=5F=5Fall=5F=5F=20list=20to=20fix=20missing?= =?UTF-8?q?=20import=20error=20=E2=9C=A8=20feat(models/api=5Fkey.py):=20ad?= =?UTF-8?q?d=20ApiKey=20model=20and=20its=20related=20classes=20to=20suppo?= =?UTF-8?q?rt=20API=20key=20functionality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/api/v1/schemas.py | 7 +++++ .../services/database/models/__init__.py | 3 +- .../services/database/models/api_key.py | 28 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/backend/langflow/services/database/models/api_key.py diff --git a/src/backend/langflow/api/v1/schemas.py b/src/backend/langflow/api/v1/schemas.py index 65bf64dca..d188e5c7a 100644 --- a/src/backend/langflow/api/v1/schemas.py +++ b/src/backend/langflow/api/v1/schemas.py @@ -1,6 +1,7 @@ from enum import Enum from pathlib import Path from typing import Any, Dict, List, Optional, Union +from langflow.services.database.models.api_key import ApiKeyRead from langflow.services.database.models.flow import FlowCreate, FlowRead from pydantic import BaseModel, Field, validator import json @@ -134,3 +135,9 @@ class ComponentListCreate(BaseModel): class ComponentListRead(BaseModel): flows: List[FlowRead] + + +class ApiKeyResponse(BaseModel): + total_count: int + user_id: str + api_keys: List[ApiKeyRead] diff --git a/src/backend/langflow/services/database/models/__init__.py b/src/backend/langflow/services/database/models/__init__.py index 28d2b4af8..01e81e277 100644 --- a/src/backend/langflow/services/database/models/__init__.py +++ b/src/backend/langflow/services/database/models/__init__.py @@ -1,5 +1,6 @@ from .flow import Flow from .user import User from .token import Token +from .api_key import ApiKey -__all__ = ["Flow", "User", "Token"] +__all__ = ["Flow", "User", "Token", "ApiKey"] diff --git a/src/backend/langflow/services/database/models/api_key.py b/src/backend/langflow/services/database/models/api_key.py new file mode 100644 index 000000000..3549c10c4 --- /dev/null +++ b/src/backend/langflow/services/database/models/api_key.py @@ -0,0 +1,28 @@ +from sqlmodel import Field +from uuid import UUID, uuid4 +from typing import Optional +from datetime import datetime +from langflow.services.database.models.base import SQLModelSerializable, SQLModel + + +class ApiKeyBase(SQLModelSerializable): + api_key: str = Field(index=True, unique=True) + name: str = Field() + create_at: datetime = Field(default_factory=datetime.utcnow) + last_used_at: Optional[datetime] = Field() + + +class ApiKey(ApiKeyBase, table=True): + id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True) + + +class ApiKeyCreate(SQLModel): + name: str = Field() + + +class ApiKeyRead(SQLModel): + id: UUID = Field(default_factory=uuid4, primary_key=True, unique=True) + api_key: str = Field(index=True, unique=True) + name: str = Field() + create_at: datetime = Field(default_factory=datetime.utcnow) + last_used_at: Optional[datetime] = Field()