From 1d72ee1295eef4daa0f251a3adfc35409a53e6c7 Mon Sep 17 00:00:00 2001 From: Javinator9889 Date: Wed, 20 Jun 2018 21:03:57 +0200 Subject: [PATCH] Inheritance in DB classes --- App/.idea/workspace.xml | 26 +++++++++++++++----------- App/database/__init__.py | 30 ++++++++++++++++++++---------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/App/.idea/workspace.xml b/App/.idea/workspace.xml index b30117d..969f846 100644 --- a/App/.idea/workspace.xml +++ b/App/.idea/workspace.xml @@ -1,12 +1,8 @@ - - - + - - @@ -301,7 +304,8 @@ - @@ -384,8 +388,8 @@ - - + + diff --git a/App/database/__init__.py b/App/database/__init__.py index cb6eac2..d07d5c3 100644 --- a/App/database/__init__.py +++ b/App/database/__init__.py @@ -3,17 +3,22 @@ # Singleton class -class DatabaseOperations(object): +class DatabaseOperationsBase(object): __instance = None - def __new__(cls, username: str, password: str): - if DatabaseOperations.__instance is None: - DatabaseOperations.__instance = object.__new__(cls) - auth_provider = PlainTextAuthProvider(username=username, password=password) - cluster = Cluster(auth_provider=auth_provider) - DatabaseOperations.__instance.__session = cluster.connect() - DatabaseOperations.__instance.__createTables() - return DatabaseOperations.__instance + def __new__(cls, username: str=None, password: str=None): + if DatabaseOperationsBase.__instance is None: + if username is None or password is None: + raise ValueError("You must provide the DB user and password at least the first time") + DatabaseOperationsBase.__instance = object.__new__(cls) + auth_provider = PlainTextAuthProvider(username=username, password=password) + cluster = Cluster(auth_provider=auth_provider) + DatabaseOperationsBase.__instance.__session = cluster.connect() + DatabaseOperationsBase.__instance.__createTables() + return DatabaseOperationsBase.__instance + + def getInstance(self): + return self.__instance def __createTables(self): with open("../../Design/db_script.cql", "r") as sql_script: @@ -21,6 +26,11 @@ def __createTables(self): for query in queries: self.__session.execute(query) + +class InsertOperations(DatabaseOperationsBase): + def __new__(cls, *args, **kwargs): + return super().__new__(cls) + def registerNewUser(self, user_id: int, username: str, name: str): query = """INSERT INTO YouTubeMDApp.User(user_id, username, name) VALUES (%s, %s, %s);""" self.__session.execute(query, (user_id, username, name)) @@ -46,4 +56,4 @@ def registerNewSong(self, file_id: str, video_id: str, audio_quality: int, audio is_metadata_by_user) VALUES (%s, %s, %s, %s, %s, %s) """ self.__session.execute(query, (file_id, video_id, audio_quality, audio_format, times_requested, - is_metadata_by_user)) + is_metadata_by_user)) \ No newline at end of file