|
|
|
|
|
from pydantic import BaseModel, EmailStr , UUID4 , Field |
|
|
from typing import Optional , Any |
|
|
from uuid import UUID |
|
|
from datetime import datetime |
|
|
import os |
|
|
import sys |
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
project_root = Path(__file__).resolve().parents[2] |
|
|
if str(project_root) not in sys.path: |
|
|
sys.path.insert(0, str(project_root)) |
|
|
from .models import UserRole,DatasetStatus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserBase(BaseModel): |
|
|
fullname: str |
|
|
username: str |
|
|
email: EmailStr |
|
|
|
|
|
|
|
|
class UserCreate(UserBase): |
|
|
password: str |
|
|
role: Optional[UserRole] = UserRole.employee |
|
|
is_active: Optional[bool] = True |
|
|
organization_id: Optional[UUID] = None |
|
|
provider_id: Optional[UUID] = None |
|
|
|
|
|
|
|
|
class UserResponse(BaseModel): |
|
|
id: UUID |
|
|
fullname: str |
|
|
username: str |
|
|
email: EmailStr |
|
|
role: UserRole |
|
|
is_active: bool |
|
|
last_login: Optional[datetime] |
|
|
organization_id: Optional[UUID] |
|
|
provider_id: Optional[UUID] |
|
|
created_at: datetime |
|
|
updated_at: datetime |
|
|
|
|
|
class Config: |
|
|
from_attributes = True |
|
|
|
|
|
|
|
|
class LoginRequest(BaseModel): |
|
|
email: EmailStr |
|
|
password: str |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ConversationCreate(BaseModel): |
|
|
convo_id: str |
|
|
user_query: dict |
|
|
response: dict |
|
|
file_metadata: Optional[dict] = None |
|
|
is_saved: Optional[bool] = False |
|
|
|
|
|
class ConversationResponse(BaseModel): |
|
|
id: UUID |
|
|
convo_id: str |
|
|
user_query: dict |
|
|
response: dict |
|
|
file_metadata: Optional[dict] = None |
|
|
is_saved: bool |
|
|
user_id: UUID |
|
|
created_at: datetime |
|
|
updated_at: datetime |
|
|
|
|
|
class Config: |
|
|
from_attributes = True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class OrganizationCreate(BaseModel): |
|
|
name: str |
|
|
plan_id: UUID |
|
|
domain: Optional[str] = None |
|
|
location: Optional[str] = None |
|
|
city: Optional[str] = None |
|
|
state: Optional[str] = None |
|
|
country: Optional[str] = None |
|
|
is_active: Optional[bool] = True |
|
|
|
|
|
|
|
|
class OrganizationResponse(BaseModel): |
|
|
id: UUID |
|
|
name: str |
|
|
domain: Optional[str] = None |
|
|
plan_id: UUID |
|
|
location: Optional[str] = None |
|
|
city: Optional[str] = None |
|
|
state: Optional[str] = None |
|
|
country: Optional[str] = None |
|
|
is_active: bool |
|
|
|
|
|
class Config: |
|
|
from_attributes = True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PlanCreate(BaseModel): |
|
|
plan_type: str |
|
|
price: float |
|
|
features: Optional[str] = None |
|
|
|
|
|
|
|
|
class PlanResponse(BaseModel): |
|
|
id: UUID |
|
|
plan_type: str |
|
|
price: float |
|
|
features: Optional[str] = None |
|
|
|
|
|
class Config: |
|
|
from_attributes = True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DatasetBase(BaseModel): |
|
|
name: str |
|
|
description: Optional[str] = None |
|
|
category: Optional[str] = None |
|
|
tags: Optional[list[str]] = None |
|
|
metadata: Optional[dict] = None |
|
|
|
|
|
|
|
|
class DatasetCreate(DatasetBase): |
|
|
organization_id: UUID |
|
|
|
|
|
file_key: Optional[str] = None |
|
|
file_size: Optional[int] = None |
|
|
file_type: Optional[str] = None |
|
|
|
|
|
|
|
|
class DatasetUpdate(BaseModel): |
|
|
name: Optional[str] = None |
|
|
description: Optional[str] = None |
|
|
category: Optional[str] = None |
|
|
tags: Optional[list[str]] = None |
|
|
metadata: Optional[dict] = None |
|
|
status: Optional[DatasetStatus] = None |
|
|
rejection_reason: Optional[str] = None |
|
|
|
|
|
|
|
|
class DatasetResponse(DatasetBase): |
|
|
id: UUID |
|
|
organization_id: UUID |
|
|
status: DatasetStatus |
|
|
file_key: Optional[str] = None |
|
|
file_size: Optional[int] = None |
|
|
file_type: Optional[str] = None |
|
|
rejection_reason: Optional[str] = None |
|
|
created_at: datetime |
|
|
updated_at: datetime |
|
|
submitted_by: Optional[UUID] = None |
|
|
|
|
|
class Config: |
|
|
from_attributes = True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserDatasetsMetadataBase(BaseModel): |
|
|
user_id: UUID |
|
|
user_metadata: Any |
|
|
|
|
|
|
|
|
class UserDatasetsMetadataCreate(UserDatasetsMetadataBase): |
|
|
pass |
|
|
|
|
|
|
|
|
class UserDatasetsMetadataResponse(UserDatasetsMetadataBase): |
|
|
id: UUID |
|
|
created_at: datetime |
|
|
updated_at: datetime |
|
|
|
|
|
class Config: |
|
|
orm_mode = True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class OrganizationBase(BaseModel): |
|
|
name: str |
|
|
domain: Optional[str] = None |
|
|
plan_id: UUID |
|
|
location: Optional[str] = None |
|
|
city: Optional[str] = None |
|
|
state: Optional[str] = None |
|
|
country: Optional[str] = None |
|
|
is_active: Optional[bool] = True |
|
|
|
|
|
|
|
|
class OrganizationCreate(OrganizationBase): |
|
|
pass |
|
|
|
|
|
class OrganizationUpdate(BaseModel): |
|
|
name: Optional[str] = None |
|
|
domain: Optional[str] = None |
|
|
location: Optional[str] = None |
|
|
city: Optional[str] = None |
|
|
state: Optional[str] = None |
|
|
country: Optional[str] = None |
|
|
is_active: Optional[bool] = None |
|
|
|
|
|
|
|
|
|
|
|
class OrganizationResponse(OrganizationBase): |
|
|
id: UUID |
|
|
created_by: Optional[UUID] = None |
|
|
created_at: datetime |
|
|
updated_at: datetime |
|
|
deleted_at: Optional[datetime] = None |
|
|
|
|
|
class Config: |
|
|
orm_mode = True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|