"""
Data-related DTOs for SecretVaults API.
"""
from typing import List, Dict, Optional, Any
from pydantic import BaseModel, Field
from ..common.types import Did, Uuid
from .users import AclDto
[docs]
class CreateStandardDataRequest(BaseModel):
"""Request model for creating standard (non-owned) data in a collection."""
collection: Uuid
data: List[Dict[str, Any]]
[docs]
class CreateOwnedDataRequest(BaseModel):
"""Request model for creating owned data in a collection, specifying owner and ACL."""
collection: Uuid
data: List[Dict[str, Any]]
owner: Did
acl: AclDto
[docs]
class CreateDataError(BaseModel):
"""Error details for a failed data creation attempt."""
error: str
document: Any
[docs]
class CreateDataResponseData(BaseModel):
"""Response data for a data creation request, including created IDs and errors."""
created: List[Uuid]
errors: List[CreateDataError] # Array of errors for failed documents
[docs]
class CreateDataResponse(BaseModel):
"""Response model for a data creation request."""
data: CreateDataResponseData
[docs]
class UpdateDataRequest(BaseModel):
"""Request model for updating data in a collection."""
collection: Uuid
filter: Dict[str, Any]
update: Dict[str, Any]
[docs]
class UpdateDataResponseData(BaseModel):
"""Response data for a data update request, including counts and upserted ID."""
acknowledged: bool
matched: int
modified: int
upserted: int
upserted_id: Optional[str] = None
[docs]
class UpdateDataResponse(BaseModel):
"""Response model for a data update request."""
data: UpdateDataResponseData
[docs]
class FindDataRequest(BaseModel):
"""Request model for finding data in a collection using a filter."""
collection: Uuid
filter: Dict[str, Any]
[docs]
class FindDataResponse(BaseModel):
"""Response model for a data find request, returning a list of documents."""
data: List[Dict[str, Any]]
[docs]
class DeleteDataRequest(BaseModel):
"""Request model for deleting data in a collection using a filter."""
collection: Uuid
filter: Dict[str, Any]
[docs]
class DeleteDataResponseData(BaseModel):
"""Response data for a data deletion request, including count of deleted documents."""
acknowledged: bool
deletedCount: int
[docs]
class DeleteDataResponse(BaseModel):
"""Response model for a data deletion request."""
data: DeleteDataResponseData
[docs]
class FlushDataRequest(BaseModel):
"""Request model for flushing all data in a collection."""
collection: Uuid
[docs]
class DataSchemaByIdRequestParams(BaseModel):
"""Request parameters for retrieving a data schema by ID."""
id: Uuid
[docs]
class TailDataRequest(BaseModel):
"""Request model for tailing the last N documents in a collection."""
id: Uuid
limit: int = Field(le=1000, default=10)
[docs]
class TailDataResponse(BaseModel):
"""Response model for a tail data request, returning a list of documents."""
data: List[Dict[str, Any]]