Skip to content

Commit 72ff718

Browse files
authored
feat(rule): add rule api (#46)
1 parent 44b6179 commit 72ff718

2 files changed

Lines changed: 88 additions & 0 deletions

File tree

server/api/rule/router.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
from core.auth import get_tenant
2+
from core.log import logger
3+
from core.plugin_manager import PluginManager
4+
from core.response import ResponseModel
5+
from fastapi import APIRouter, Depends, HTTPException, Path
6+
from whiskerrag_types.model import Tenant, GlobalRule
7+
8+
router = APIRouter(
9+
prefix="/api/rule",
10+
tags=["rule"],
11+
responses={404: {"description": "Not found"}},
12+
dependencies=[Depends(get_tenant)],
13+
)
14+
15+
16+
@router.get("/global", operation_id="get_global_rule", response_model_by_alias=False)
17+
async def get_global_rule(
18+
tenant: Tenant = Depends(get_tenant),
19+
) -> ResponseModel[GlobalRule]:
20+
try:
21+
db_engine = PluginManager().dbPlugin
22+
rule = await db_engine.get_tenant_rule(tenant.tenant_id)
23+
if not rule:
24+
logger.error(
25+
"[get_tenant_rule][tenant rule not exists],tenant_id={}".format(
26+
tenant.tenant_id
27+
)
28+
)
29+
raise HTTPException(status_code=404, detail="knowledge base not exists")
30+
return ResponseModel(data=rule, success=True)
31+
except HTTPException as e:
32+
raise e
33+
except Exception as e:
34+
logger.error(f"[get_tenant_rule][error] error={str(e)}")
35+
raise HTTPException(status_code=500, detail="Failed to get tenant global rule")
36+
37+
38+
@router.get(
39+
"/space/{space_id}/rule",
40+
operation_id="get_space_rule",
41+
response_model_by_alias=False,
42+
)
43+
async def get_space_rule(
44+
space_id: str = Path(..., description="knowledge base id"),
45+
tenant: Tenant = Depends(get_tenant),
46+
) -> ResponseModel[GlobalRule]:
47+
try:
48+
db_engine = PluginManager().dbPlugin
49+
rule = await db_engine.get_space_rule(tenant.tenant_id, space_id)
50+
if not rule:
51+
logger.error(
52+
"[get_space_rule][space rule not exists],tenant_id={}".format(
53+
tenant.tenant_id
54+
)
55+
)
56+
raise HTTPException(
57+
status_code=404, detail="knowledge base rule not exists"
58+
)
59+
return ResponseModel(data=rule, success=True)
60+
except HTTPException as e:
61+
raise e
62+
except Exception as e:
63+
logger.error(f"[get_space_rule][error] error={str(e)}")
64+
raise HTTPException(status_code=500, detail="Failed to get knowledge base rule")

server/plugins/db_engine/supabase_client.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
Space,
2121
KnowledgeSourceEnum,
2222
TaskStatus,
23+
GlobalRule,
24+
SpaceRule,
25+
Wiki,
2326
)
2427
from whiskerrag_types.model.page import QueryParams
2528
from whiskerrag_utils import RegisterTypeEnum, get_register
@@ -562,3 +565,24 @@ async def retrieve(
562565
params: RetrievalRequest,
563566
) -> List[RetrievalChunk]:
564567
pass
568+
569+
# =================== rule ===================
570+
async def create_rule(
571+
self, tenant_id: str, rule: Union[GlobalRule, SpaceRule]
572+
) -> None:
573+
pass
574+
575+
async def update_rule(
576+
self, tenant_id: str, rule_id: str, rule: Union[GlobalRule, SpaceRule]
577+
) -> Union[GlobalRule, SpaceRule]:
578+
pass
579+
580+
async def get_tenant_rule(self, tenant_id: str) -> Optional[str]:
581+
return
582+
583+
async def get_space_rule(self, space_id: str) -> Optional[str]:
584+
pass
585+
586+
# =================== wiki ===================
587+
async def create_wiki(self, wiki: Wiki) -> None:
588+
pass

0 commit comments

Comments
 (0)