Skip to content

Commit

Permalink
feat: add Onboarding repository
Browse files Browse the repository at this point in the history
  • Loading branch information
mamadoudicko committed Oct 5, 2023
1 parent 06be1fa commit 347f2ad
Show file tree
Hide file tree
Showing 6 changed files with 107 additions and 2 deletions.
8 changes: 8 additions & 0 deletions backend/models/databases/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,3 +255,11 @@ def get_knowledge_by_id(self, knowledge_id: UUID):
@abstractmethod
def get_all_knowledge_in_brain(self, brain_id: UUID):
pass

@abstractmethod
def get_user_onboarding(self, user_id: UUID):
pass

@abstractmethod
def update_user_onboarding(self, user_id: UUID, onboarding):
pass
4 changes: 2 additions & 2 deletions backend/models/databases/supabase/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from models.databases.supabase.api_key_handler import ApiKeyHandler
from models.databases.supabase.brains import Brain
from models.databases.supabase.brains_subscription_invitations import \
BrainSubscription
from models.databases.supabase.brains_subscription_invitations import BrainSubscription
from models.databases.supabase.chats import Chats
from models.databases.supabase.files import File
from models.databases.supabase.knowledge import Knowledges
from models.databases.supabase.notifications import Notifications
from models.databases.supabase.onboarding import Onboarding
from models.databases.supabase.prompts import Prompts
from models.databases.supabase.user_usage import UserUsage
from models.databases.supabase.vectors import Vector
62 changes: 62 additions & 0 deletions backend/models/databases/supabase/onboarding.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
from typing import Optional
from uuid import UUID

from fastapi import HTTPException
from models.databases.repository import (
Repository, # Assuming you have a repository class
)
from models.onboarding import Onboardings
from pydantic import BaseModel


class OnboardingUpdatableProperties(BaseModel):
"""Properties that can be received on onboarding update"""

onboarding_b1: Optional[bool]
onboarding_b2: Optional[bool]
onboarding_b3: Optional[bool]


class Onboarding(Repository):
def __init__(self, supabase_client):
self.db = supabase_client

def get_user_onboarding(self, user_id: UUID) -> Onboardings:
"""
Get user onboarding information by user_id
"""
onboarding_data = (
self.db.from_("onboarding")
.select("user_id", "onboarding_b1", "onboarding_b2", "onboarding_b3")
.filter("user_id", "eq", user_id)
.limit(1)
.execute()
).data

if not onboarding_data:
raise HTTPException(404, "User onboarding not found")

return Onboardings(**onboarding_data[0])

def update_user_onboarding(
self, user_id: UUID, onboarding: OnboardingUpdatableProperties
) -> Onboardings:
"""Update user onboarding information by user_id"""
response = (
self.db.from_("onboarding")
.upsert(
{
"user_id": user_id,
"onboarding_b1": onboarding.onboarding_b1,
"onboarding_b2": onboarding.onboarding_b2,
"onboarding_b3": onboarding.onboarding_b3,
},
unique_keys=["user_id"],
)
.execute()
.data
)

if not response:
raise HTTPException(404, "User onboarding not updated")
return Onboardings(**response[0])
3 changes: 3 additions & 0 deletions backend/models/databases/supabase/supabase.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
File,
Knowledges,
Notifications,
Onboarding,
Prompts,
UserUsage,
Vector,
Expand All @@ -23,6 +24,7 @@ class SupabaseDB(
ApiKeyHandler,
Chats,
Vector,
Onboarding,
Prompts,
Notifications,
Knowledges,
Expand All @@ -39,3 +41,4 @@ def __init__(self, supabase_client):
Prompts.__init__(self, supabase_client)
Notifications.__init__(self, supabase_client)
Knowledges.__init__(self, supabase_client)
Onboarding.__init__(self, supabase_client)
18 changes: 18 additions & 0 deletions backend/repository/onboarding/get_user_onboarding.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from uuid import UUID

from models.onboarding import Onboardings
from models.settings import get_supabase_db


def get_user_onboarding(user_id: UUID) -> Onboardings:
"""
Get a user's onboarding status
Args:
user_id (UUID): The id of the user
Returns:
Onboardings: The user's onboarding status
"""
supabase_db = get_supabase_db()
return supabase_db.get_user_onboarding(user_id)
14 changes: 14 additions & 0 deletions backend/repository/onboarding/udpate_user_onboarding.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from uuid import UUID

from models.databases.supabase.onboarding import OnboardingUpdatableProperties
from models.onboarding import Onboardings
from models.settings import get_supabase_db


def update_user_onboarding(
user_id: UUID, onboarding: OnboardingUpdatableProperties
) -> Onboardings:
"""Update user onboarding information by user_id"""

supabase_db = get_supabase_db()
return supabase_db.update_user_onboarding(user_id, onboarding)

0 comments on commit 347f2ad

Please sign in to comment.