This commit is contained in:
2024-11-20 00:28:22 +01:00
parent 610d703566
commit aa99075a6b
12 changed files with 197 additions and 72 deletions

29
src/repositories/users.py Normal file
View File

@@ -0,0 +1,29 @@
from domain.users import CreateUser, User
from .base import BaseRepository
class UserRepository(BaseRepository):
COLLECTION_NAME = "users"
@classmethod
async def get_or_create_user(cls, newUser: CreateUser) -> User:
filter_data = {}
for provider, data in newUser.oauths.items():
filter_data[f"oauths.{provider}.id"] = data.id
async with cls.connect() as collection:
await collection.update_one(
filter_data,
{
"$setOnInsert": {
**newUser.model_dump(),
}
},
upsert=True,
)
user = await collection.find_one(filter_data)
return User(**user)