80 lines
2.0 KiB
Python
80 lines
2.0 KiB
Python
from typing import Optional, List
|
|
|
|
from beanie import Document
|
|
|
|
from .constants import UserAccountProperty
|
|
from backend.models.permission.constants import (
|
|
AdministrativeRole,
|
|
Capability,
|
|
)
|
|
from datetime import datetime
|
|
from common.constants.region import UserRegion
|
|
from .constants import AuthType
|
|
|
|
|
|
class UserAccountDoc(Document):
|
|
profile_id: Optional[str]
|
|
account_id: Optional[str]
|
|
service_plan_id: Optional[str]
|
|
properties: UserAccountProperty
|
|
capabilities: Capability
|
|
user_role: int = AdministrativeRole.NONE
|
|
preferred_region: UserRegion = UserRegion.ZH_CN
|
|
|
|
class Settings:
|
|
name = "user_account"
|
|
|
|
|
|
class UserPasswordDoc(Document):
|
|
user_id: str
|
|
password: str
|
|
|
|
class Settings:
|
|
name = "user_password"
|
|
|
|
|
|
class UserEmailDoc(Document):
|
|
user_id: str
|
|
email: str
|
|
|
|
class Settings:
|
|
name = "user_email"
|
|
|
|
|
|
class UserMobileDoc(Document):
|
|
user_id: str
|
|
mobile: str
|
|
|
|
class Settings:
|
|
name = "user_mobile"
|
|
|
|
|
|
class AuthCodeDoc(Document):
|
|
auth_code: str
|
|
method: str
|
|
method_type: AuthType
|
|
expiry: datetime
|
|
|
|
class Settings:
|
|
name = "user_auth_code"
|
|
|
|
class UsageLogDoc(Document):
|
|
timestamp: datetime = datetime.utcnow() # timestamp
|
|
tenant_id: str # tenant id
|
|
operation: str # operation type
|
|
request_id: str # request id # TODO: use true one
|
|
units: int # units
|
|
status: str # operation status
|
|
latency_ms: int # latency time(milliseconds)
|
|
bytes_in: int # input bytes
|
|
bytes_out: int # output bytes
|
|
key_id: Optional[str] = None # API Key ID
|
|
extra: dict = {} # extra information
|
|
|
|
class Settings:
|
|
name = "usage_log_doc"
|
|
indexes = [
|
|
"tenant_id",
|
|
"request_id",
|
|
"key_id"
|
|
] |