feat: add tenant_domain CRUD API dspy files and updated index.ui

This commit is contained in:
yumoqing 2026-07-09 13:11:11 +08:00
parent 7940d50aed
commit 3be62ba01c
5 changed files with 50 additions and 4 deletions

View File

@ -0,0 +1,10 @@
ns = params_kw.copy()
for k,v in ns.items():
if v == "NaN" or v == "null":
ns[k] = None
if not ns.get("id"):
ns["id"] = getID()
db = DBPools()
async with db.sqlorContext("pipeline") as sor:
await sor.C("tenant_domain", ns)
return {"status": "ok"}

View File

@ -0,0 +1,9 @@
ns = params_kw.copy()
rid = ns.get("id")
if not rid:
return {"status": "error", "message": "id required"}
ns["rid"] = rid
db = DBPools()
async with db.sqlorContext("pipeline") as sor:
await sor.sqlExe("DELETE FROM tenant_domain WHERE id=${rid}$", ns)
return {"status": "ok"}

View File

@ -0,0 +1,15 @@
ns = params_kw.copy()
for k,v in ns.items():
if v == "NaN" or v == "null":
ns[k] = None
page = int(ns.get("page", 1))
pagerows = int(ns.get("rows", 20))
offset = (page - 1) * pagerows
ns["pagerows"] = pagerows
ns["offset"] = offset
db = DBPools()
async with db.sqlorContext("pipeline") as sor:
recs = await sor.sqlExe("SELECT count(*) as total FROM tenant_domain", {})
total = recs[0].total if recs else 0
recs = await sor.sqlExe("SELECT * FROM tenant_domain ORDER BY created_at desc LIMIT ${pagerows}$ OFFSET ${offset}$", ns)
return {"total": total, "rows": [dict(r) for r in recs]}

View File

@ -0,0 +1,12 @@
ns = params_kw.copy()
for k,v in ns.items():
if v == "NaN" or v == "null":
ns[k] = None
rid = ns.get("id")
if not rid:
return {"status": "error", "message": "id required"}
ns["rid"] = rid
db = DBPools()
async with db.sqlorContext("pipeline") as sor:
await sor.sqlExe("UPDATE tenant_domain SET domain=${domain}$, resellerid=${resellerid}$, orgid=${orgid}$, status=${status}$ WHERE id=${rid}$", ns)
return {"status": "ok"}

View File

@ -32,7 +32,7 @@
"height": "100%",
"css": "card",
"title": "域名列表",
"data_url": "{{entire_url('/tenant/tenant_domain')}}",
"data_url": "{{entire_url('/tenant/api/tenant_domain_get.dspy')}}",
"data_method": "GET",
"page_rows": 20,
"toolbar": {
@ -85,7 +85,7 @@
"dismiss_events": ["cancel", "submited"]
},
"options": {
"url": "{{entire_url('/tenant/tenant_domain')}}"
"url": "{{entire_url('/tenant/api/tenant_domain_get.dspy')}}"
}
},
{
@ -98,7 +98,7 @@
"dismiss_events": ["cancel", "submited"]
},
"options": {
"url": "{{entire_url('/tenant/tenant_domain')}}"
"url": "{{entire_url('/tenant/api/tenant_domain_get.dspy')}}"
}
},
{
@ -108,7 +108,7 @@
"target": "self",
"method": "delete_rows",
"options": {
"url": "{{entire_url('/tenant/tenant_domain')}}"
"url": "{{entire_url('/tenant/api/tenant_domain_get.dspy')}}"
}
}
]