Skip to content

Commit

Permalink
Inheritance in DB classes
Browse files Browse the repository at this point in the history
  • Loading branch information
Javinator9889 committed Jun 20, 2018
1 parent 0ba1de1 commit 1d72ee1
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 21 deletions.
26 changes: 15 additions & 11 deletions App/.idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 20 additions & 10 deletions App/database/__init__.py
Expand Up @@ -3,24 +3,34 @@


# 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:
queries = sql_script.read().splitlines()
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))
Expand All @@ -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))

0 comments on commit 1d72ee1

Please sign in to comment.