|
2 | 2 |
|
3 | 3 | import sys |
4 | 4 | import logging |
| 5 | +from typing import Any |
5 | 6 | from asyncio import gather |
6 | 7 | from operator import methodcaller |
7 | | -from typing import Any, AsyncGenerator |
| 8 | +from collections.abc import AsyncGenerator |
8 | 9 | from functools import wraps, partial, lru_cache |
9 | 10 |
|
10 | | -from nonebot.params import Depends |
| 11 | +import click |
| 12 | +from nonebot.rule import Rule |
11 | 13 | import sqlalchemy.ext.asyncio as sa_async |
| 14 | +from nonebot.permission import Permission |
12 | 15 | from sqlalchemy.util import greenlet_spawn |
13 | | -from nonebot.matcher import current_matcher |
| 16 | +from nonebot.params import Depends, DefaultParam |
14 | 17 | from nonebot.plugin import Plugin, PluginMetadata |
| 18 | +from nonebot.matcher import Matcher, current_matcher |
15 | 19 | from sqlalchemy import URL, Table, MetaData, make_url |
| 20 | +from sqlalchemy.log import Identified, _qual_logger_name_for_cls |
16 | 21 | from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine |
17 | 22 | from nonebot import logger, require, get_driver, get_plugin_by_module_name |
18 | 23 |
|
19 | 24 | from . import migrate |
20 | | -from .config import Config |
21 | | -from .utils import LoguruHandler, StreamToLogger |
| 25 | +from .param import ORMParam |
| 26 | +from .config import Config, plugin_config |
| 27 | +from .utils import LoguruHandler, StreamToLogger, get_subclasses |
22 | 28 |
|
23 | 29 | if sys.version_info >= (3, 10): |
24 | 30 | from typing import Annotated |
|
36 | 42 | "Model", |
37 | 43 | # param |
38 | 44 | "SQLDepends", |
39 | | - "ORMParam", |
40 | 45 | # config |
41 | 46 | "Config", |
42 | | - "config", |
| 47 | + "plugin_config", |
43 | 48 | # migrate |
44 | 49 | "AlembicConfig", |
45 | | - "list_templates", |
46 | | - "init", |
47 | | - "revision", |
48 | | - "check", |
49 | | - "merge", |
50 | | - "upgrade", |
51 | | - "downgrade", |
52 | | - "sync", |
53 | | - "show", |
54 | | - "history", |
55 | | - "heads", |
56 | | - "branches", |
57 | | - "current", |
58 | | - "stamp", |
59 | | - "edit", |
60 | | - "ensure_version", |
61 | 50 | ) |
62 | 51 | __plugin_meta__ = PluginMetadata( |
63 | 52 | name="nonebot-plugin-orm", |
|
68 | 57 | config=Config, |
69 | 58 | ) |
70 | 59 |
|
71 | | - |
72 | 60 | _binds: dict[type[Model], AsyncEngine] |
73 | 61 | _engines: dict[str, AsyncEngine] |
74 | 62 | _metadatas: dict[str, MetaData] |
@@ -230,9 +218,24 @@ def _init_logger(): |
230 | 218 | l.setLevel(level) |
231 | 219 |
|
232 | 220 |
|
233 | | -from .model import * |
234 | | -from .param import * |
235 | | -from .config import * |
236 | | -from .migrate import * |
237 | | - |
238 | 221 | _init_logger() |
| 222 | + |
| 223 | + |
| 224 | +def _init_param(): |
| 225 | + for cls in (Rule, Permission): |
| 226 | + cls.HANDLER_PARAM_TYPES.insert(-1, ORMParam) |
| 227 | + |
| 228 | + Matcher.HANDLER_PARAM_TYPES = Matcher.HANDLER_PARAM_TYPES[:-1] + ( |
| 229 | + ORMParam, |
| 230 | + DefaultParam, |
| 231 | + ) |
| 232 | + |
| 233 | + |
| 234 | +_init_param() |
| 235 | + |
| 236 | + |
| 237 | +from .model import Model as Model |
| 238 | +from .config import Config as Config |
| 239 | +from .param import SQLDepends as SQLDepends |
| 240 | +from .config import plugin_config as plugin_config |
| 241 | +from .migrate import AlembicConfig as AlembicConfig |
0 commit comments