Add Pydantic models for nodes usage history, subscriptions, and user management

- Implemented models for nodes usage history including NodeInfoDto, GetUserAccessibleNodesResponse, and usage statistics.
- Created subscription-related models such as UserSubscription, SubscriptionInfoData, and various response DTOs for subscription information.
- Developed models for subscription settings, templates, and system statistics, enhancing the API's capability to manage and retrieve subscription configurations.
- Introduced user management models including CreateUserRequestDto, UpdateUserRequestDto, and various response DTOs for user actions.
- Added bulk actions for user updates and statistics tracking, improving the efficiency of user management operations.
- Established a base controller for handling API requests and responses, along with decorators for HTTP methods to streamline API interactions.
- Included utility functions for serialization using orjson for better performance with Pydantic models.
This commit is contained in:
Artem 2025-07-03 12:22:16 +02:00
parent 6e90ab89e9
commit 950a7ffab3
No known key found for this signature in database
GPG key ID: 833485276B7902CE
85 changed files with 87 additions and 87 deletions

View file

@ -3,7 +3,7 @@ import os
import pytest
from dotenv import load_dotenv
from remnawave_api import RemnawaveSDK
from remnawave import RemnawaveSDK
load_dotenv()
REMNAWAVE_BASE_URL = os.getenv("REMNAWAVE_BASE_URL")

View file

@ -1,7 +1,7 @@
import pytest
from remnawave_api.models import LoginRequestDto, LoginResponseDto, LoginTelegramRequestDto
from remnawave_api.exceptions import ForbiddenError, ApiError
from remnawave.models import LoginRequestDto, LoginResponseDto, LoginTelegramRequestDto
from remnawave.exceptions import ForbiddenError, ApiError
from tests.conftest import REMNAWAVE_ADMIN_PASSWORD, REMNAWAVE_ADMIN_USERNAME

View file

@ -1,4 +1,4 @@
from remnawave_api.models import GetNodesUsageByRangeResponseDto, GetNodesRealtimeUsageResponseDto
from remnawave.models import GetNodesUsageByRangeResponseDto, GetNodesRealtimeUsageResponseDto
from tests.utils import generate_isoformat_range

View file

@ -1,6 +1,6 @@
import pytest
from remnawave_api.models import (
from remnawave.models import (
CreateConfigProfileRequestDto,
CreateConfigProfileResponseDto,
DeleteConfigProfileResponseDto,

View file

@ -2,8 +2,8 @@ import random
import pytest
from remnawave_api.enums import ALPN, Fingerprint
from remnawave_api.models import (
from remnawave.enums import ALPN, Fingerprint
from remnawave.models import (
CreateHostRequestDto,
CreateHostResponseDto,
DeleteHostResponseDto,

View file

@ -3,7 +3,7 @@ import uuid
import pytest
from remnawave_api.models import (
from remnawave.models import (
CreateUserHwidDeviceRequestDto,
DeleteUserHwidDeviceRequestDto,
CreateUserHwidDeviceResponseDto,

View file

@ -1,6 +1,6 @@
import pytest
from remnawave_api.models import GetAllInboundsResponseDto
from remnawave.models import GetAllInboundsResponseDto
@pytest.mark.asyncio

View file

@ -2,7 +2,7 @@ from datetime import datetime, timedelta
import pytest
from remnawave_api.models import (
from remnawave.models import (
CreateInfraBillingNodeRequestDto,
CreateInfraBillingNodeResponseDto,
CreateInfraProviderRequestDto,

View file

@ -1,7 +1,7 @@
from uuid import UUID
import pytest
from remnawave_api.models import (
from remnawave.models import (
AddUsersToInternalSquadRequestDto,
AddUsersToInternalSquadResponseDto,
CreateInternalSquadRequestDto,

View file

@ -1,6 +1,6 @@
import pytest
from remnawave_api.models import GetPubKeyResponseDto
from remnawave.models import GetPubKeyResponseDto
@pytest.mark.asyncio

View file

@ -2,7 +2,7 @@ import random
import pytest
from remnawave_api.models import (
from remnawave.models import (
NodeConfigProfileRequestDto,
CreateNodeRequestDto,
DeleteNodeResponseDto,
@ -13,7 +13,7 @@ from remnawave_api.models import (
ReorderNodeResponseDto,
UpdateNodeRequestDto,
)
from remnawave_api.models.nodes import ReorderNodeItem
from remnawave.models.nodes import ReorderNodeItem
from tests.conftest import REMNAWAVE_CONFIG_PROFILE_UUID, REMNAWAVE_INBOUND_UUID
from tests.utils import generate_random_string

View file

@ -2,7 +2,7 @@ from datetime import datetime, timedelta
import pytest
from remnawave_api.models import (
from remnawave.models import (
GetNodeUserUsageByRangeResponseDto,
GetNodesUsageByRangeResponseDto,
)

View file

@ -1,7 +1,7 @@
import pytest
from remnawave_api.enums import ClientType
from remnawave_api.models import GetSubscriptionInfoResponseDto
from remnawave.enums import ClientType
from remnawave.models import GetSubscriptionInfoResponseDto
from tests.conftest import REMNAWAVE_SHORT_UUID

View file

@ -1,6 +1,6 @@
import pytest
from remnawave_api.models import (
from remnawave.models import (
GetSubscriptionSettingsResponseDto,
UpdateSubscriptionSettingsRequestDto,
UpdateSubscriptionSettingsResponseDto,

View file

@ -1,7 +1,7 @@
import pytest
from remnawave_api.enums import TemplateType
from remnawave_api.models import GetTemplateResponseDto, UpdateTemplateRequestDto, UpdateTemplateResponseDto
from remnawave.enums import TemplateType
from remnawave.models import GetTemplateResponseDto, UpdateTemplateRequestDto, UpdateTemplateResponseDto
@pytest.mark.asyncio

View file

@ -1,6 +1,6 @@
import pytest
from remnawave_api.models import (
from remnawave.models import (
GetBandwidthStatsResponseDto,
GetNodesStatisticsResponseDto,
GetStatsResponseDto,

View file

@ -4,9 +4,9 @@ from datetime import datetime, timedelta
import pytest
import pytz
from remnawave_api.enums import ErrorCode, UserStatus
from remnawave_api.exceptions import ApiError
from remnawave_api.models import (
from remnawave.enums import ErrorCode, UserStatus
from remnawave.exceptions import ApiError
from remnawave.models import (
CreateUserRequestDto,
DeleteUserResponseDto,
EmailUserResponseDto,

View file

@ -4,7 +4,7 @@ from typing import List
import pytest
import pytz
from remnawave_api.models import BulkResponseDto, UpdateUserFields
from remnawave.models import BulkResponseDto, UpdateUserFields
from tests.conftest import REMNAWAVE_USER_UUID

View file

@ -1,6 +1,6 @@
import pytest
from remnawave_api.models import GetUserUsageByRangeResponseDto
from remnawave.models import GetUserUsageByRangeResponseDto
from tests.conftest import REMNAWAVE_USER_UUID
from tests.utils import generate_isoformat_range