Files
test/app/schema/__pycache__/advanced_schema.cpython-311.pyc
T

54 lines
7.6 KiB
Plaintext
Raw Normal View History

2026-09-21 19:03:31 +08:00
§
c‡ªjoãó6—dZddlmZddlmZmZddlmZmZm Z m
Z
ddl m Z Gd„de¦«Z
e
 ¦«Gd„d e¦«ZGd
„d e¦«ZGd „d
e¦«ZGd„de¦«ZGd„de¦«ZGd„de¦«ZdS)u通用高级筛选器出入å�‚(需求 2.7.1)。
请求体形如:
{
"model": "student",
"rules": [
{"field": "age", "operator": ">", "value": 25},
{"field": "gender", "operator": "=", "value": "ç”·"},
{"logic": "OR", "sub_rules": [
{"field": "salary", "operator": ">=", "value": 15000},
{"field": "class_name", "operator": "like", "value": "Java"}
]}
],
"order_by": "age",
"order": "desc",
"page": 1,
"page_size": 10
}
é)Ú annotations)ÚAnyÚLiteral)Ú BaseModelÚFieldÚfield_validatorÚmodel_validator)Ú SortOrdercó*—eZdZUdZedd¬¦«Zded<edd¬¦«Zded<edd ¬¦«Zd
ed <edd ¬¦«Z d
ed<edd¬¦«Z
ded<e d¬¦«d„¦«Z e
d¦«ed„¦«¦«ZdS)Ú
FilterRuleu2一æ�¡è§„则 = 一个æ�¡ä»¶ 或 一组å­�规则。Nu#字段å��,与 sub_rules 二选一©Ú descriptionú
str | NoneÚfielduIæ“�作符 > < = != >= <= like in not_like not_in between is_null not_nullÚoperatoru4比较值;in/not_in 传数组,between ä¼  [a, b]rÚvalueu#å­�规则之间的逻辑,AND / ORz(Literal['AND', 'OR', 'and', 'or'] | NoneÚlogicu嵌套å­�规则,å�¯å¤šå±‚zlist['FilterRule'] | NoneÚ sub_rulesÚafter)ÚmodecóŒ—t|j¦«}|r|j€d|_|S|jr|jst d¦«‚|S)NÚANDu1å�¶å­�规则必须å�Œæ—¶æ��ä¾› field å’Œ operator)ÚboolrrrrÚ
ValueError)ÚselfÚis_groups ú2D:\xwt0803\wolin_sms\app\schema\advanced_schema.pyÚ_checkzFilterRule._check,sV€å˜œÑ'Ô'ˆØ ð ØŒzÐ!Ø"�”
؈KØŒzð R ¤ð RÝÐPÑQÔQÐ Q؈ ócó|—t|t¦«r&| ¦« ¦«n|S)N)Ú
isinstanceÚstrÚstripÚlower)ÚclsÚvs rÚ_lowerzFilterRule._lower7s0€õ%/¨qµ#Ñ$6Ô$6Ð=ˆq�wŠw‰yŒy�ŠÑ Ô Ð ¸AÐ=r)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrÚ__annotations__rrrrr rrÚ classmethodr'©rrr r s)€€€€€€Ø<Ð<à˜˜dÐ0UÐVÑVÔV€EÐVÐVÐVÑVØ ˜5Ø Ø_ðñô€Hðððñð��tÐ)_Ð`Ñ`Ô`€EÐ`Ð`Ð`Ñ`à6;°e¸DÐNsÐ6tÑ6tÔ6t€EÐtÐtÐtÑtØ+0¨5°ÐC`Ð+aÑ+aÔ+a€IÐaÐaÐaÑaà€_˜'Ð"Ñ"Ô"ððñ#Ô"ðð€_�ZÑ Ô Øð>ð>ñ„[ñ!Ô ð>ð>ð>rr có<—eZdZUedd¬¦«Zded<eed¬¦«Zded <ed
d ¬¦«Zd ed
<ee j
d¬¦«Z ded<edd¬¦«Z ded<eddd¬¦«Z
ded<ed
d¬¦«Zded<edd¬¦«Zded<d
S) Ú QueryRequestÚstudentuG目标模型:student / class / teacher / score / employment / advisorr
r"Úmodelõ筛选规则树©Údefault_factoryrúlist[FilterRule]ÚrulesNu*排åº�字段(å�Œæ ·å�—白å��å�•é™�制)rÚorder_byu排åº�æ–¹å�‘ asc / descr
Úorderé)ÚgeÚintÚpageé
éÈ©r;ÚleÚ page_sizeu3指定返回字段,ä¸�传返回全部å�¯è¯»å­—段zlist[str] | NoneÚfieldsTu9是å�¦è¿”回规则解æž�å�Žçš„说明,方便调试规则rÚ with_explain)r(r)r*rr2r,Úlistr7r8r
ÚASCr9r=rBrCrDr.rrr0r0@s€€€€€€Ø��yÐ.wÐxÑxÔx€EÐxÐxÐxÑxØ#˜e°DÐFWÐXÑXÔX€EÐXÐXÐXÑXØ ˜5 Ð3_Ð`Ñ`Ô`€HÐ`Ð`Ð`Ñ`Ø�u˜Yœ]Ð8QÐRÑRÔR€EÐRÐRÐRÑRØ��a˜A�‘”€DÐÐÐÑØ�U˜2 !¨Ð,Ñ,Ô,€IÐ,Ð,Ð,Ñ,Ø$˜u TÐ7lÐmÑmÔm€FÐmÐmÐmÑmؘ˜tÐ1lÐmÑmÔm€LÐmÐmÐmÑmÐmÐmrr0có|—eZdZUedd¬¦«Zded<edd¬¦«Zded <edd
¬¦«Zded <dS) Ú
MetricSpec.u ��函数r
z>Literal['count', 'count_distinct', 'avg', 'sum', 'max', 'min']ÚfuncNu!è�šå�ˆå­—段;count æ—¶å�¯çœ�ç•¥rru 结果列å��Úalias)r(r)r*rrIr,rrJr.rrrHrHKsu€€€€€€ØKPÈ5ÐQTÐbpÐKqÑKqÔKq€DÐqÐqÐqÑqؘ˜dÐ0SÐTÑTÔT€EÐTÐTÐTÑTؘ˜d°Ð?Ñ?Ô?€EÐ?Ð?Ð?Ñ?Ð?Ð?rrHcó(—eZdZUedd¬¦«Zded<eed¬¦«Zded <edd
d ¬ ¦«Zd
ed<eed¬¦«Z ded<eed¬¦«Z
ded<edd¬¦«Z ded<e j
Zded<edd