Build lightweight AI agent admin
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Redis管理Schema
|
||||
"""
|
||||
from datetime import datetime
|
||||
from typing import Optional, List, Any, Dict
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from app.base_schema import CSTDatetime
|
||||
|
||||
|
||||
class RedisKeySchema(BaseModel):
|
||||
"""Redis键Schema"""
|
||||
key: str
|
||||
type: str # string, list, set, zset, hash
|
||||
ttl: int # -1表示永不过期,-2表示已过期
|
||||
size: Optional[int] = None # 键的大小(字节)
|
||||
length: Optional[int] = None # 集合/列表的元素数量
|
||||
encoding: Optional[str] = None # 编码方式
|
||||
|
||||
|
||||
class RedisKeyDetailSchema(BaseModel):
|
||||
"""Redis键详情Schema"""
|
||||
key: str
|
||||
type: str
|
||||
ttl: int
|
||||
value: Any # 根据类型不同,值的格式也不同
|
||||
size: Optional[int] = None
|
||||
encoding: Optional[str] = None
|
||||
created_at: Optional[CSTDatetime] = None
|
||||
|
||||
|
||||
class RedisKeyCreateSchema(BaseModel):
|
||||
"""创建Redis键Schema"""
|
||||
key: str = Field(..., description="键名")
|
||||
type: str = Field(..., description="数据类型: string, list, set, zset, hash")
|
||||
value: Any = Field(..., description="值")
|
||||
ttl: Optional[int] = Field(None, description="过期时间(秒),-1表示永不过期")
|
||||
|
||||
|
||||
class RedisKeyUpdateSchema(BaseModel):
|
||||
"""更新Redis键Schema"""
|
||||
value: Any = Field(..., description="新值")
|
||||
ttl: Optional[int] = Field(None, description="过期时间(秒)")
|
||||
|
||||
|
||||
class RedisStringValueSchema(BaseModel):
|
||||
"""String类型值Schema"""
|
||||
value: str
|
||||
|
||||
|
||||
class RedisListValueSchema(BaseModel):
|
||||
"""List类型值Schema"""
|
||||
values: List[str]
|
||||
|
||||
|
||||
class RedisSetValueSchema(BaseModel):
|
||||
"""Set类型值Schema"""
|
||||
members: List[str]
|
||||
|
||||
|
||||
class RedisZSetValueSchema(BaseModel):
|
||||
"""ZSet类型值Schema"""
|
||||
members: List[Dict[str, Any]] # [{"member": "xxx", "score": 1.0}]
|
||||
|
||||
|
||||
class RedisHashValueSchema(BaseModel):
|
||||
"""Hash类型值Schema"""
|
||||
fields: Dict[str, str]
|
||||
|
||||
|
||||
class RedisKeySearchSchema(BaseModel):
|
||||
"""Redis键搜索Schema"""
|
||||
pattern: str = Field(default="*", description="搜索模式,支持通配符")
|
||||
key_type: Optional[str] = Field(None, description="键类型过滤")
|
||||
page: int = Field(default=1, ge=1, description="页码")
|
||||
page_size: int = Field(default=20, ge=1, le=100, description="每页数量")
|
||||
|
||||
|
||||
class RedisKeyListResponse(BaseModel):
|
||||
"""Redis键列表响应Schema"""
|
||||
total: int
|
||||
keys: List[RedisKeySchema]
|
||||
page: int
|
||||
page_size: int
|
||||
|
||||
|
||||
class RedisDatabaseSchema(BaseModel):
|
||||
"""Redis数据库Schema"""
|
||||
db_index: int
|
||||
keys_count: int
|
||||
expires_count: int
|
||||
avg_ttl: int
|
||||
|
||||
|
||||
class RedisDatabaseListResponse(BaseModel):
|
||||
"""Redis数据库列表响应Schema"""
|
||||
databases: List[RedisDatabaseSchema]
|
||||
total_keys: int
|
||||
|
||||
|
||||
class RedisKeyRenameSchema(BaseModel):
|
||||
"""重命名键Schema"""
|
||||
old_key: str
|
||||
new_key: str
|
||||
|
||||
|
||||
class RedisKeyExpireSchema(BaseModel):
|
||||
"""设置过期时间Schema"""
|
||||
key: str
|
||||
ttl: int # 秒
|
||||
|
||||
|
||||
class RedisBatchDeleteSchema(BaseModel):
|
||||
"""批量删除Schema"""
|
||||
keys: List[str]
|
||||
|
||||
|
||||
class RedisFlushDBSchema(BaseModel):
|
||||
"""清空数据库Schema"""
|
||||
db_index: int
|
||||
confirm: bool = Field(..., description="确认清空")
|
||||
|
||||
|
||||
class RedisOperationResponse(BaseModel):
|
||||
"""操作响应Schema"""
|
||||
success: bool
|
||||
message: str
|
||||
data: Optional[Any] = None
|
||||
Reference in New Issue
Block a user