Skip to content

Commit 0a45835

Browse files
committed
📝 docs: update README.md
1 parent 9afb254 commit 0a45835

File tree

1 file changed

+63
-8
lines changed

1 file changed

+63
-8
lines changed

README.md

Lines changed: 63 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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
5658
from nonebot.params import Depends
59+
from nonebot import require, on_message
5760
from sqlalchemy.orm import Mapped, mapped_column
58-
from sqlalchemy.ext.asyncio import async_scoped_session
5961

6062
require("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
80135
Usage: nb orm [OPTIONS] COMMAND [ARGS]...

0 commit comments

Comments
 (0)