feat(doc): add new doc and register into mongodb
This commit is contained in:
parent
cea505cbdd
commit
1c70143f2d
@ -55,7 +55,7 @@ class EmailSendStatusDoc(Document):
|
|||||||
indexes = [
|
indexes = [
|
||||||
"email_id",
|
"email_id",
|
||||||
"tenant_id"
|
"tenant_id"
|
||||||
]
|
]
|
||||||
|
|
||||||
class EmailTrackingDoc(Document):
|
class EmailTrackingDoc(Document):
|
||||||
email_id: str
|
email_id: str
|
||||||
@ -83,7 +83,7 @@ class EmailTrackingDoc(Document):
|
|||||||
indexes = [
|
indexes = [
|
||||||
"email_id",
|
"email_id",
|
||||||
"tenant_id"
|
"tenant_id"
|
||||||
]
|
]
|
||||||
|
|
||||||
class EmailBounceDoc(Document):
|
class EmailBounceDoc(Document):
|
||||||
email: str
|
email: str
|
||||||
@ -104,5 +104,25 @@ class EmailBounceDoc(Document):
|
|||||||
indexes = [
|
indexes = [
|
||||||
"email",
|
"email",
|
||||||
"tenant_id"
|
"tenant_id"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
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"
|
||||||
|
]
|
||||||
@ -1,15 +1,12 @@
|
|||||||
from webapi.config.site_settings import site_settings
|
from webapi.config.site_settings import site_settings
|
||||||
from beanie import init_beanie
|
from beanie import init_beanie
|
||||||
from motor.motor_asyncio import AsyncIOMotorClient
|
from motor.motor_asyncio import AsyncIOMotorClient
|
||||||
from backend.models.models import MessageTemplateDoc, EmailSenderDoc, EmailSendStatusDoc, EmailTrackingDoc, EmailBounceDoc
|
from backend.models.models import MessageTemplateDoc, EmailSenderDoc, EmailSendStatusDoc, EmailTrackingDoc, EmailBounceDoc, UsageLogDoc
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# MongoDB config
|
# MongoDB config
|
||||||
# TODO: for non-local environment, use the following config
|
MONGODB_URI = os.getenv('MONGODB_URI')
|
||||||
#MONGODB_URI = os.getenv('MONGODB_URI', 'mongodb+srv://jetli:8IHKx6dZK8BfugGp@freeleaps2.hanbj.mongodb.net/')
|
MONGODB_NAME = os.getenv('MONGODB_NAME')
|
||||||
#MONGODB_NAME = os.getenv('MONGODB_NAME', 'freeleaps2')
|
|
||||||
MONGODB_URI = os.getenv('MONGODB_URI', 'mongodb://localhost:27017/')
|
|
||||||
MONGODB_NAME = os.getenv('MONGODB_NAME', 'interview')
|
|
||||||
|
|
||||||
# create MongoDB client
|
# create MongoDB client
|
||||||
client = AsyncIOMotorClient(
|
client = AsyncIOMotorClient(
|
||||||
@ -26,7 +23,8 @@ document_models = [
|
|||||||
EmailSenderDoc,
|
EmailSenderDoc,
|
||||||
EmailSendStatusDoc,
|
EmailSendStatusDoc,
|
||||||
EmailTrackingDoc,
|
EmailTrackingDoc,
|
||||||
EmailBounceDoc
|
EmailBounceDoc,
|
||||||
|
UsageLogDoc
|
||||||
]
|
]
|
||||||
|
|
||||||
def register(app):
|
def register(app):
|
||||||
@ -40,13 +38,7 @@ def register(app):
|
|||||||
|
|
||||||
async def initiate_database():
|
async def initiate_database():
|
||||||
"""initiate Beanie database connection"""
|
"""initiate Beanie database connection"""
|
||||||
try:
|
await init_beanie(
|
||||||
await init_beanie(
|
database=client[MONGODB_NAME],
|
||||||
database=client[MONGODB_NAME],
|
document_models=document_models
|
||||||
document_models=document_models
|
)
|
||||||
)
|
|
||||||
print(f"✅ database initialized successfully: {MONGODB_NAME}")
|
|
||||||
print(f" URI: {MONGODB_URI}")
|
|
||||||
except Exception as e:
|
|
||||||
print(f"❌ database initialization failed: {e}")
|
|
||||||
raise
|
|
||||||
Loading…
Reference in New Issue
Block a user