@@ -51,30 +51,85 @@ pip install nonebot-plugin-orm[aiosqlite]
5151
5252### ORM
5353
54+ #### Model 依赖注入
55+
5456``` python
55- from nonebot import require
57+ from nonebot.adapters import Event
5658from nonebot.params import Depends
59+ from nonebot import require, on_message
5760from sqlalchemy.orm import Mapped, mapped_column
58- from sqlalchemy.ext.asyncio import async_scoped_session
5961
6062require(" nonebot_plugin_orm" )
63+ from nonebot_plugin_orm import Model, async_scoped_session
64+
65+ matcher = on_message()
66+
6167
62- from nonebot_plugin_orm import Model, get_scoped_session
68+ def get_user_id (event : Event) -> str :
69+ return event.get_user_id()
6370
6471
65- class MyModel (Model ):
72+ class User (Model ):
6673 id : Mapped[int ] = mapped_column(primary_key = True )
67- data : Mapped[str ]
74+ user_id : Mapped[str ] = Depends(get_user_id)
6875
6976
7077@matcher.handle ()
71- async def handler (session : async_scoped_session = Depends(get_scoped_session)):
72- session.add(MyModel(data = " data" ))
73- await session.commit()
78+ async def _ (event : Event, sess : async_scoped_session, user : User | None ):
79+ if user:
80+ await matcher.finish(f " Hello, { user.user_id} " )
81+
82+ sess.add(User(user_id = get_user_id(event)))
83+ await sess.commit()
84+ await matcher.finish(" Hello, new user!" )
85+ ```
86+
87+ #### SQL 依赖注入
88+
89+ ``` python
90+ from sqlalchemy import select
91+ from nonebot.adapters import Event
92+ from nonebot.params import Depends
93+ from nonebot import require, on_message
94+ from sqlalchemy.orm import Mapped, mapped_column
95+
96+ require(" nonebot_plugin_orm" )
97+ from nonebot_plugin_orm import Model, SQLDepends, async_scoped_session
98+
99+ matcher = on_message()
100+
101+
102+ def get_session_id (event : Event) -> str :
103+ return event.get_session_id()
104+
105+
106+ class Session (Model ):
107+ id : Mapped[int ] = mapped_column(primary_key = True )
108+ session_id: Mapped[str ]
109+
110+
111+ @matcher.handle ()
112+ async def _ (
113+ event : Event,
114+ sess : async_scoped_session,
115+ session : Session
116+ | None = SQLDepends(
117+ select(Session).where(Session.session_id == Depends(get_session_id))
118+ ),
119+ ):
120+ if session:
121+ await matcher.finish(f " Hello, { session.session_id} " )
122+
123+ sess.add(Session(session_id = get_session_id(event)))
124+ await sess.commit()
125+ await matcher.finish(" Hello, new user!" )
126+
74127```
75128
76129### CLI
77130
131+ 依赖 [ NB CLI] ( https://github.com/nonebot/nb-cli )
132+
78133``` properties
79134$ nb orm
80135Usage: nb orm [OPTIONS] COMMAND [ARGS]...
0 commit comments