from __future__ import annotations
from typing import Optional
from pydantic import BaseModel


class TenantRequest(BaseModel):
    tenant_name: str


class EFSSyncRequest(BaseModel):
    project_slug: str
    efs_env: str


class RepoSetupRequest(BaseModel):
    project_slug: Optional[str] = None
    project_dir: Optional[str] = None


class GitLabPushRequest(BaseModel):
    project_slug: Optional[str] = None
    project_dir: Optional[str] = None
    org_code: Optional[str] = None


class JenkinsSetupRequest(BaseModel):
    project_slug: str
    gitlab_url: str


class JenkinsTriggerRequest(BaseModel):
    project_slug: str
    job: str = "frontend"


class RunnerSetupRequest(BaseModel):
    project_slug: str
    gitlab_url: str


class RunnerTriggerRequest(BaseModel):
    project_slug: str
    job: str = "frontend"


class DBMigrateRequest(BaseModel):
    project_slug: Optional[str] = None
    backend_dir: Optional[str] = None


class SetupInstallRequest(BaseModel):
    project_slug: Optional[str] = None
    efs_env: Optional[str] = None
    project_dir: Optional[str] = None


class BuildRequest(BaseModel):
    project_slug: Optional[str] = None
    efs_env: Optional[str] = None
    project_dir: Optional[str] = None


class DomainValidateRequest(BaseModel):
    domain_url: str


class StopPipelineRequest(BaseModel):
    pass
