style: 移动
This commit is contained in:
+2
-2
@@ -18,11 +18,11 @@ from pretor.utils.ray_hook import ray_actor_hook
|
|||||||
from fastapi import APIRouter, Depends
|
from fastapi import APIRouter, Depends
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from pretor.utils.access import Accessor, TokenData
|
from pretor.utils.access import Accessor, TokenData
|
||||||
from pretor.core.database.table.individual import AgentType
|
from pretor.core.postgres_database.table import AgentType
|
||||||
from fastapi import HTTPException
|
from fastapi import HTTPException
|
||||||
from typing import Optional, List, Dict
|
from typing import Optional, List, Dict
|
||||||
from pretor.utils.check_user.role_check import RoleChecker
|
from pretor.utils.check_user.role_check import RoleChecker
|
||||||
from pretor.core.database.table.user import UserAuthority
|
from pretor.core.postgres_database.table import UserAuthority
|
||||||
|
|
||||||
agent_router = APIRouter(prefix="/api/v1/agent", tags=["agent"])
|
agent_router = APIRouter(prefix="/api/v1/agent", tags=["agent"])
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ from pretor.utils.access import Accessor, TokenData
|
|||||||
from fastapi.concurrency import run_in_threadpool
|
from fastapi.concurrency import run_in_threadpool
|
||||||
from pretor.utils.ray_hook import ray_actor_hook
|
from pretor.utils.ray_hook import ray_actor_hook
|
||||||
from pretor.utils.check_user.role_check import RoleChecker
|
from pretor.utils.check_user.role_check import RoleChecker
|
||||||
from pretor.core.database.table.user import UserAuthority
|
from pretor.core.postgres_database.table import UserAuthority
|
||||||
from pretor.utils.error import UserNotExistError
|
from pretor.utils.error import UserNotExistError
|
||||||
|
|
||||||
auth_router = APIRouter(prefix="/api/v1/auth", tags=["auth"])
|
auth_router = APIRouter(prefix="/api/v1/auth", tags=["auth"])
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ from pydantic import BaseModel
|
|||||||
from typing import Literal
|
from typing import Literal
|
||||||
from pretor.utils.access import TokenData, Accessor
|
from pretor.utils.access import TokenData, Accessor
|
||||||
from pretor.utils.check_user.role_check import RoleChecker
|
from pretor.utils.check_user.role_check import RoleChecker
|
||||||
from pretor.core.database.table.user import UserAuthority
|
from pretor.core.postgres_database.table import UserAuthority
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from pretor.core.global_state_machine.model_provider.base_provider import Provider
|
from pretor.core.global_state_machine.model_provider.base_provider import Provider
|
||||||
from pretor.utils.ray_hook import ray_actor_hook
|
from pretor.utils.ray_hook import ray_actor_hook
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ from pretor.utils.ray_hook import ray_actor_hook
|
|||||||
from fastapi import APIRouter, Depends
|
from fastapi import APIRouter, Depends
|
||||||
from pretor.utils.access import TokenData
|
from pretor.utils.access import TokenData
|
||||||
from pretor.utils.check_user.role_check import RoleChecker
|
from pretor.utils.check_user.role_check import RoleChecker
|
||||||
from pretor.core.database.table.user import UserAuthority
|
from pretor.core.postgres_database.table import UserAuthority
|
||||||
|
|
||||||
resource_router = APIRouter(prefix="/api/v1/resource")
|
resource_router = APIRouter(prefix="/api/v1/resource")
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
from sqlmodel import SQLModel, Field
|
|
||||||
|
|
||||||
|
|
||||||
class EventRecord(SQLModel, table=True):
|
|
||||||
trace_id: str = Field(
|
|
||||||
primary_key=True, description="The unique trace ID of the PretorEvent"
|
|
||||||
)
|
|
||||||
event_data_json: str = Field(description="The JSON serialized PretorEvent data")
|
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
from sqlmodel import select
|
from sqlmodel import select
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
from pretor.core.database.table.event import EventRecord
|
from pretor.core.postgres_database.table.event import EventRecord
|
||||||
from sqlalchemy.ext.asyncio import async_sessionmaker, AsyncSession
|
from sqlalchemy.ext.asyncio import async_sessionmaker, AsyncSession
|
||||||
|
|
||||||
|
|
||||||
+2
-2
@@ -12,10 +12,10 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from pretor.core.database.table.individual import WorkerIndividual
|
from pretor.core.postgres_database.table.individual import WorkerIndividual
|
||||||
from sqlmodel import select
|
from sqlmodel import select
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
from pretor.core.database.database_exception import database_exception
|
from pretor.core.postgres_database.database_exception import database_exception
|
||||||
|
|
||||||
from ulid import ULID
|
from ulid import ULID
|
||||||
|
|
||||||
+2
-2
@@ -14,9 +14,9 @@
|
|||||||
|
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from pretor.core.database.table.provider import Provider
|
from pretor.core.postgres_database.table.provider import Provider
|
||||||
from sqlmodel import select
|
from sqlmodel import select
|
||||||
from pretor.core.database.database_exception import database_exception
|
from pretor.core.postgres_database.database_exception import database_exception
|
||||||
|
|
||||||
|
|
||||||
class ProviderDatabase:
|
class ProviderDatabase:
|
||||||
+2
-2
@@ -12,10 +12,10 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from pretor.core.database.table.system_node import SystemNodeConfig
|
from pretor.core.postgres_database.table.system_node import SystemNodeConfig
|
||||||
from sqlmodel import select
|
from sqlmodel import select
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
from pretor.core.database.database_exception import database_exception
|
from pretor.core.postgres_database.database_exception import database_exception
|
||||||
|
|
||||||
|
|
||||||
class SystemNodeDatabase:
|
class SystemNodeDatabase:
|
||||||
@@ -12,11 +12,11 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from pretor.core.database.table.user import User
|
from pretor.core.postgres_database.table.user import User
|
||||||
from sqlmodel import select
|
from sqlmodel import select
|
||||||
from pretor.utils.error import UserNotExistError, UserPasswordError
|
from pretor.utils.error import UserNotExistError, UserPasswordError
|
||||||
from pretor.core.database.database_exception import database_exception
|
from pretor.core.postgres_database.database_exception import database_exception
|
||||||
from pretor.core.database.table.user import UserAuthority
|
from pretor.core.postgres_database.table.user import UserAuthority
|
||||||
from pretor.utils.access import Accessor
|
from pretor.utils.access import Accessor
|
||||||
|
|
||||||
|
|
||||||
@@ -20,11 +20,11 @@ from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
|||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from sqlmodel import SQLModel
|
from sqlmodel import SQLModel
|
||||||
|
|
||||||
from pretor.core.database.module.individual import IndividualDatabase
|
from .module.individual import IndividualDatabase
|
||||||
from pretor.core.database.module.event import EventDatabase
|
from .module.event import EventDatabase
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from .module.user import AuthDatabase
|
||||||
from pretor.core.database.module.provider import ProviderDatabase
|
from .module.provider import ProviderDatabase
|
||||||
from pretor.core.database.module.system_node import SystemNodeDatabase
|
from .module.system_node import SystemNodeDatabase
|
||||||
|
|
||||||
|
|
||||||
@ray.remote
|
@ray.remote
|
||||||
|
|||||||
+3
-3
@@ -12,8 +12,8 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from pretor.core.database.table.user import User
|
from pretor.core.postgres_database.table.user import User
|
||||||
from pretor.core.database.table.provider import Provider
|
from pretor.core.postgres_database.table.provider import Provider
|
||||||
from pretor.core.database.table.individual import WorkerIndividual
|
from pretor.core.postgres_database.table.individual import WorkerIndividual
|
||||||
|
|
||||||
__all__ = ["User", "Provider", "WorkerIndividual"]
|
__all__ = ["User", "Provider", "WorkerIndividual"]
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Copyright 2026 zhaoxi826
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
from sqlalchemy.ext.asyncio import AsyncAttrs
|
||||||
|
from sqlalchemy.orm import DeclarativeBase
|
||||||
|
|
||||||
|
class BaseDataModel(DeclarativeBase, AsyncAttrs):
|
||||||
|
pass
|
||||||
+4
@@ -12,3 +12,7 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
from sqlmodel import SQLModel, Field
|
||||||
|
|
||||||
|
class ChatHistory(SQLModel):
|
||||||
|
__tablename__ = "chat_history"
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Copyright 2026 zhaoxi826
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
|
from sqlmodel import SQLModel, Field
|
||||||
|
|
||||||
|
|
||||||
|
class EventRecord(SQLModel, table=True):
|
||||||
|
trace_id: str = Field(
|
||||||
|
primary_key=True, description="The unique trace ID of the PretorEvent"
|
||||||
|
)
|
||||||
|
event_data_json: str = Field(description="The JSON serialized PretorEvent data")
|
||||||
@@ -18,7 +18,7 @@ from datetime import datetime, timedelta, timezone
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
from fastapi import HTTPException, status, Request
|
from fastapi import HTTPException, status, Request
|
||||||
from pydantic import BaseModel, ValidationError
|
from pydantic import BaseModel, ValidationError
|
||||||
from pretor.core.database.table.user import User
|
from pretor.core.postgres_database.table import User
|
||||||
from pwdlib import PasswordHash
|
from pwdlib import PasswordHash
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
from fastapi import Depends, HTTPException
|
from fastapi import Depends, HTTPException
|
||||||
from pretor.utils.access import Accessor, TokenData
|
from pretor.utils.access import Accessor, TokenData
|
||||||
from pretor.core.database.table.user import UserAuthority
|
from pretor.core.postgres_database.table import UserAuthority
|
||||||
from pretor.utils.ray_hook import ray_actor_hook
|
from pretor.utils.ray_hook import ray_actor_hook
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "programme",
|
|
||||||
"desc": "一个示范型的编程工作流",
|
|
||||||
"work_link": [
|
|
||||||
{
|
|
||||||
"step": 1,
|
|
||||||
"node": "consciousness_node",
|
|
||||||
"action": "architect",
|
|
||||||
"desc": "【人类规范】分析用户需求,构建程序整体架构,定义需要拉起的子个体名称与数量。"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 2,
|
|
||||||
"node": "control_node",
|
|
||||||
"action": "spawn_actors",
|
|
||||||
"desc": "【人类规范】根据架构要求,拉起对应的开发与测试工作组,并挂载 /workspace 目录。"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 3,
|
|
||||||
"node": "composite_individual",
|
|
||||||
"action": "decompose",
|
|
||||||
"desc": "【人类规范】将整体架构拆解为可独立执行的原子任务包 (Task Packets)。",
|
|
||||||
"output": "task_packets"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 4,
|
|
||||||
"node": "primary_individual",
|
|
||||||
"action": "execute_code",
|
|
||||||
"desc": "【人类规范】执行编码任务,必须确保所有代码写入指定的挂载目录。",
|
|
||||||
"input": "task_packets",
|
|
||||||
"output": "source_code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 5,
|
|
||||||
"node": "composite_individual",
|
|
||||||
"action": "audit",
|
|
||||||
"desc": "【人类规范】对产出的源码进行静态逻辑检查与 PEP8 代码规范审计。",
|
|
||||||
"input": "source_code",
|
|
||||||
"output": "audit_report"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 6,
|
|
||||||
"node": "control_node",
|
|
||||||
"action": "resource_recycle",
|
|
||||||
"desc": "【安全规范】暂存当前编码子个体的状态,释放非必要显存,为测试环境腾出算力。",
|
|
||||||
"input": "audit_report"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 7,
|
|
||||||
"node": "consciousness_node",
|
|
||||||
"action": "design_test",
|
|
||||||
"desc": "【人类规范】基于源码设计测试用例架构,覆盖边缘场景。",
|
|
||||||
"input": "source_code",
|
|
||||||
"output": "test_spec"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 8,
|
|
||||||
"node": "primary_individual",
|
|
||||||
"action": "run_test",
|
|
||||||
"desc": "【人类规范】在独立的 Docker 沙箱中运行 test,并生成结构化的实验报告。",
|
|
||||||
"input": "test_spec",
|
|
||||||
"output": "test_report"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 9,
|
|
||||||
"node": "consciousness_node",
|
|
||||||
"action": "analyze_report",
|
|
||||||
"desc": "【逻辑网关】研究测试报告。如果存在 Error 或 Fail,必须触发逻辑跳转,重写代码。",
|
|
||||||
"input": "test_report",
|
|
||||||
"logic_gate": {
|
|
||||||
"if_fail": "jump_to_step_4",
|
|
||||||
"if_pass": "continue"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"step": 10,
|
|
||||||
"node": "supervisory_node",
|
|
||||||
"action": "terminate_workflow",
|
|
||||||
"desc": "【系统规范】核对所有产出物,关闭工作流管道,向宿主机发送 .done 信号。",
|
|
||||||
"input": ["source_code", "test_report"]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,7 @@ from unittest.mock import patch
|
|||||||
from sqlalchemy.exc import IntegrityError, OperationalError
|
from sqlalchemy.exc import IntegrityError, OperationalError
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
from pretor.utils.error import UserNotExistError
|
from pretor.utils.error import UserNotExistError
|
||||||
from pretor.core.database.database_exception import database_exception
|
from pretor.core.postgres_database import database_exception
|
||||||
|
|
||||||
|
|
||||||
@database_exception
|
@database_exception
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ def mock_session_maker():
|
|||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_add_user(mock_session_maker, mock_dependencies):
|
async def test_add_user(mock_session_maker, mock_dependencies):
|
||||||
mock_user_cls, _ = mock_dependencies
|
mock_user_cls, _ = mock_dependencies
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from pretor.core.postgres_database.module import AuthDatabase
|
||||||
|
|
||||||
maker, session = mock_session_maker
|
maker, session = mock_session_maker
|
||||||
db = AuthDatabase(maker)
|
db = AuthDatabase(maker)
|
||||||
@@ -51,7 +51,7 @@ async def test_add_user(mock_session_maker, mock_dependencies):
|
|||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_change_password_success(mock_session_maker, mock_dependencies):
|
async def test_change_password_success(mock_session_maker, mock_dependencies):
|
||||||
mock_user_cls, mock_select = mock_dependencies
|
mock_user_cls, mock_select = mock_dependencies
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from pretor.core.postgres_database.module import AuthDatabase
|
||||||
|
|
||||||
maker, session = mock_session_maker
|
maker, session = mock_session_maker
|
||||||
db = AuthDatabase(maker)
|
db = AuthDatabase(maker)
|
||||||
@@ -80,7 +80,7 @@ async def test_change_password_success(mock_session_maker, mock_dependencies):
|
|||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_change_password_user_not_exist(mock_session_maker, mock_dependencies):
|
async def test_change_password_user_not_exist(mock_session_maker, mock_dependencies):
|
||||||
mock_user_cls, mock_select = mock_dependencies
|
mock_user_cls, mock_select = mock_dependencies
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from pretor.core.postgres_database.module import AuthDatabase
|
||||||
|
|
||||||
maker, session = mock_session_maker
|
maker, session = mock_session_maker
|
||||||
db = AuthDatabase(maker)
|
db = AuthDatabase(maker)
|
||||||
@@ -96,7 +96,7 @@ async def test_change_password_user_not_exist(mock_session_maker, mock_dependenc
|
|||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_change_password_wrong_password(mock_session_maker, mock_dependencies):
|
async def test_change_password_wrong_password(mock_session_maker, mock_dependencies):
|
||||||
mock_user_cls, mock_select = mock_dependencies
|
mock_user_cls, mock_select = mock_dependencies
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from pretor.core.postgres_database.module import AuthDatabase
|
||||||
|
|
||||||
maker, session = mock_session_maker
|
maker, session = mock_session_maker
|
||||||
db = AuthDatabase(maker)
|
db = AuthDatabase(maker)
|
||||||
@@ -118,7 +118,7 @@ async def test_change_password_wrong_password(mock_session_maker, mock_dependenc
|
|||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_delete_user_success(mock_session_maker, mock_dependencies):
|
async def test_delete_user_success(mock_session_maker, mock_dependencies):
|
||||||
mock_user_cls, mock_select = mock_dependencies
|
mock_user_cls, mock_select = mock_dependencies
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from pretor.core.postgres_database.module import AuthDatabase
|
||||||
|
|
||||||
maker, session = mock_session_maker
|
maker, session = mock_session_maker
|
||||||
db = AuthDatabase(maker)
|
db = AuthDatabase(maker)
|
||||||
@@ -140,7 +140,7 @@ async def test_delete_user_success(mock_session_maker, mock_dependencies):
|
|||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_delete_user_not_exist(mock_session_maker, mock_dependencies):
|
async def test_delete_user_not_exist(mock_session_maker, mock_dependencies):
|
||||||
mock_user_cls, mock_select = mock_dependencies
|
mock_user_cls, mock_select = mock_dependencies
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from pretor.core.postgres_database.module import AuthDatabase
|
||||||
|
|
||||||
maker, session = mock_session_maker
|
maker, session = mock_session_maker
|
||||||
db = AuthDatabase(maker)
|
db = AuthDatabase(maker)
|
||||||
@@ -156,7 +156,7 @@ async def test_delete_user_not_exist(mock_session_maker, mock_dependencies):
|
|||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_login_user_success(mock_session_maker, mock_dependencies):
|
async def test_login_user_success(mock_session_maker, mock_dependencies):
|
||||||
mock_user_cls, mock_select = mock_dependencies
|
mock_user_cls, mock_select = mock_dependencies
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from pretor.core.postgres_database.module import AuthDatabase
|
||||||
|
|
||||||
maker, session = mock_session_maker
|
maker, session = mock_session_maker
|
||||||
db = AuthDatabase(maker)
|
db = AuthDatabase(maker)
|
||||||
@@ -177,7 +177,7 @@ async def test_login_user_success(mock_session_maker, mock_dependencies):
|
|||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_login_user_not_exist(mock_session_maker, mock_dependencies):
|
async def test_login_user_not_exist(mock_session_maker, mock_dependencies):
|
||||||
mock_user_cls, mock_select = mock_dependencies
|
mock_user_cls, mock_select = mock_dependencies
|
||||||
from pretor.core.database.module.user import AuthDatabase
|
from pretor.core.postgres_database.module import AuthDatabase
|
||||||
|
|
||||||
maker, session = mock_session_maker
|
maker, session = mock_session_maker
|
||||||
db = AuthDatabase(maker)
|
db = AuthDatabase(maker)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from pretor.core.database.table.provider import Provider
|
from pretor.core.postgres_database.table import Provider
|
||||||
|
|
||||||
|
|
||||||
def test_provider_table():
|
def test_provider_table():
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from pretor.core.database.table.user import User
|
from pretor.core.postgres_database.table import User
|
||||||
|
|
||||||
|
|
||||||
def test_user_table():
|
def test_user_table():
|
||||||
|
|||||||
Reference in New Issue
Block a user