Merge pull request 'fix: change some un-exist insert methods to create' (#5) from haolou_local into dev

Reviewed-on: https://gitea.freeleaps.mathmast.com/products/freeleaps-authentication/pulls/5
This commit is contained in:
haolou 2025-11-07 09:35:38 +00:00
commit 7b923c1702
5 changed files with 43 additions and 8 deletions

View File

@ -15,7 +15,7 @@ authentication:
registry: docker.io registry: docker.io
repository: null repository: null
name: 6901bcf4ed3725f39f11343d-authentication name: 6901bcf4ed3725f39f11343d-authentication
tag: snapshot-2346a42 tag: snapshot-ddcf8d8
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: http - name: http
@ -81,7 +81,7 @@ authentication:
appEnv: alpha appEnv: alpha
devsvcWebapiUrlBase: http://devsvc-service.freeleaps-alpha.svc.freeleaps.cluster:8007/api/devsvc/ devsvcWebapiUrlBase: http://devsvc-service.freeleaps-alpha.svc.freeleaps.cluster:8007/api/devsvc/
notificationWebapiUrlBase: http://notification-service.freeleaps-alpha.svc.freeleaps.cluster:8003/api/notification/ notificationWebapiUrlBase: http://notification-service.freeleaps-alpha.svc.freeleaps.cluster:8003/api/notification/
authServiceEndpoint: http://freeleaps-auth-service.68c0da88a0a7837e84b580eb-alpha.svc.freeleaps.cluster:9000/api/v1/ authServiceEndpoint: http://freeleaps-auth-service.freeleaps-alpha.svc.freeleaps.cluster:9000/api/v1/
jwtAlgorithm: HS256 jwtAlgorithm: HS256
serviceApiAccessHost: 0.0.0.0 serviceApiAccessHost: 0.0.0.0
serviceApiAccessPort: 8004 serviceApiAccessPort: 8004

View File

@ -18,7 +18,7 @@ authentication:
registry: docker.io registry: docker.io
repository: null repository: null
name: 6901bcf4ed3725f39f11343d-authentication name: 6901bcf4ed3725f39f11343d-authentication
tag: snapshot-73d6a46 tag: snapshot-8584f90
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- name: http - name: http
@ -65,14 +65,31 @@ authentication:
namespace: freeleaps-monitoring-system namespace: freeleaps-monitoring-system
interval: 30s interval: 30s
scrapeTimeout: '' scrapeTimeout: ''
ingresses: {} ingresses:
- name: authentication-ingress
host: authentication.freeleaps.com
class: nginx
rules:
- path: /
pathType: Prefix
backend:
service:
name: authentication-service
port:
number: 8004
tls:
exists: false
issuerRef:
name: freeleaps-dot-com
kind: ClusterIssuer
name: authentication.freeleaps.com-cert
configs: configs:
tz: UTC tz: UTC
appName: authentication appName: authentication
appEnv: prod appEnv: prod
devsvcWebapiUrlBase: http://devsvc-service.freeleaps-prod.svc.freeleaps.cluster:8007/api/devsvc/ devsvcWebapiUrlBase: http://devsvc-service.freeleaps-prod.svc.freeleaps.cluster:8007/api/devsvc/
notificationWebapiUrlBase: http://notification-service.freeleaps-prod.svc.freeleaps.cluster:8003/api/notification/ notificationWebapiUrlBase: http://notification-service.freeleaps-prod.svc.freeleaps.cluster:8003/api/notification/
authServiceEndpoint: http://freeleaps-auth-service.68c0da88a0a7837e84b580eb-prod.svc.freeleaps.cluster:9000/api/v1/ authServiceEndpoint: http://freeleaps-auth-service.freeleaps-prod.svc.freeleaps.cluster:9000/api/v1/
jwtAlgorithm: HS256 jwtAlgorithm: HS256
serviceApiAccessHost: 0.0.0.0 serviceApiAccessHost: 0.0.0.0
serviceApiAccessPort: 8004 serviceApiAccessPort: 8004

View File

@ -118,7 +118,7 @@ class RoleHandler:
raise RequestValidationError("Role with the provided ID already exists.") raise RequestValidationError("Role with the provided ID already exists.")
new_doc.id = custom_role_id new_doc.id = custom_role_id
await new_doc.insert() await new_doc.create()
return new_doc return new_doc
async def query_roles(self, role_key: Optional[str], role_name: Optional[str], skip: int = 0, limit: int = 10) -> \ async def query_roles(self, role_key: Optional[str], role_name: Optional[str], skip: int = 0, limit: int = 10) -> \

View File

@ -36,7 +36,7 @@ class UserRoleHandler:
user_id=user_id, user_id=user_id,
role_ids=unique_role_ids role_ids=unique_role_ids
) )
await user_role_doc.insert() await user_role_doc.create()
return user_role_doc return user_role_doc
async def get_role_and_permission_by_user_id(self, user_id: str) -> tuple[list[str], list[str]]: async def get_role_and_permission_by_user_id(self, user_id: str) -> tuple[list[str], list[str]]:

View File

@ -3,6 +3,7 @@ BaseDoc - A custom document class that provides Beanie-like interface using dire
""" """
import asyncio import asyncio
from datetime import datetime, timezone from datetime import datetime, timezone
from bson import ObjectId
from typing import Optional, List, Dict, Any, Type, Union from typing import Optional, List, Dict, Any, Type, Union
from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase
from pydantic import BaseModel from pydantic import BaseModel
@ -282,6 +283,13 @@ class BaseDoc(BaseModel, metaclass=QueryModelMeta):
# Convert Decimal objects to float for MongoDB compatibility # Convert Decimal objects to float for MongoDB compatibility
doc_dict = self._convert_decimals_to_float(doc_dict) doc_dict = self._convert_decimals_to_float(doc_dict)
# Respect pre-populated id by mapping to MongoDB _id
if getattr(self, 'id', None):
try:
doc_dict['_id'] = ObjectId(self.id)
except Exception:
doc_dict['_id'] = self.id
result = await collection.insert_one(doc_dict) result = await collection.insert_one(doc_dict)
# Set the id field from the inserted document # Set the id field from the inserted document
@ -314,7 +322,17 @@ class BaseDoc(BaseModel, metaclass=QueryModelMeta):
elif hasattr(self, 'auth_code'): elif hasattr(self, 'auth_code'):
query['auth_code'] = self.auth_code query['auth_code'] = self.auth_code
if query: if getattr(self, 'id', None):
# Update by primary key when available
try:
object_id = ObjectId(self.id)
except Exception:
object_id = self.id
result = await collection.update_one({"_id": object_id}, {"$set": doc_dict}, upsert=True)
if result.upserted_id:
self.id = str(result.upserted_id)
elif query:
# Update existing document # Update existing document
result = await collection.update_one(query, {"$set": doc_dict}, upsert=True) result = await collection.update_one(query, {"$set": doc_dict}, upsert=True)
# If it was an insert, set the id field # If it was an insert, set the id field