Module app.modules.DbHandler
Expand source code
import psycopg2
import logging
logger = logging.getLogger()
class DbHandler:
''' ##**Cette classe nous permet de manipuler la base de données qui reflète ce qui se passe au niveau du serveur distant.** '''
connection = None
'''C'est la variable qui nous permet d'intéragir avec notre base de données.'''
def __init__(self, host, user, password, database):
# Applying singleton pattern, to avoid instantiating the class more than once.
if(DbHandler.connection != None):
return
# Connecting to the database.
DbHandler.connection = psycopg2.connect(host=host, user=user, password=password, database=database)
logger.info("Connection to database was established.")
def find_invalid_records(self):
'''Récupération d'un tuple qui contient les fichiers invalides.'''
# Query to get all records where is_expired = true and is_valid = false.
sql = "SELECT * FROM v_archivage_files WHERE is_expired = {} OR is_valid={};".format(True,False)
cur = DbHandler.connection.cursor()
# Executing the query.
cur.execute(sql)
# Fetching the results.
records= cur.fetchall()
cur.close()
# returning the results.
return records
def update_all(self,checksum=""):
'''La mise à jour de la validité des fichiers contenus dans la base de données en fonction du *Hash*.'''
# we are using this function in order to update the validity of the records in the database.
sql = "UPDATE archivage_files SET is_valid= {} WHERE checksum != '{}';".format(False,checksum)
cur = DbHandler.connection.cursor()
# Executing the query.
cur.execute(sql)
DbHandler.connection.commit() # Committing the changes to the database.
cur.close()
def find_all(self):
'''Sélection des fichiers qui n'ont pas encore dépassé le délai d'expiration sous forme d'un tuple.'''
# Query to get all records where is_expired = false.
sql = "SELECT * FROM v_archivage_files WHERE is_expired = {};".format(False)
cur = DbHandler.connection.cursor()
# Executing the query.
cur.execute(sql)
# Fetching the results.
records= cur.fetchall()
cur.close()
# returning the results.
return records
def add_record(self,checksum,expiration_date,filename):
'''Ajout des fichiers qui sont caractérisés par :
- **Nom du fichier**
- **Hash**
- **délai d'expiration**'''
# inserting new record to our database
sql = """INSERT INTO archivage_files(checksum,expiration_date,filename) VALUES(%s,%s,%s)"""
cur = DbHandler.connection.cursor()
cur.execute(sql, (checksum,expiration_date ,filename))
DbHandler.connection.commit() # Committing the changes to the database.
cur.close()
def delete_record(self,file_id):
'''Suppression des fichiers.'''
# Query to delete record based on file_id.
sql = "DELETE FROM archivage_files WHERE file_id = {}".format(file_id)
cur = DbHandler.connection.cursor()
# Executing the query.
cur.execute(sql)
DbHandler.connection.commit() # Committing the changes to the database.
cur.close()
def update_record(self,checksum,is_valid,expiration_date):
'''La mise à jour de la validité et le délai d'expiration des fichiers.'''
sql = "UPDATE archivage_files SET expiration_date = '{}', is_valid= {} WHERE checksum = '{}';".format(expiration_date,is_valid,checksum)
cur = DbHandler.connection.cursor()
# Executing the query.
cur.execute(sql)
DbHandler.connection.commit() # Committing the changes to the database.
cur.close()
def find_record(self,checksum):
'''Récupération des fichiers non expirés.'''
# Query to get records based on checksum and is_expired = false.
sql = "SELECT * FROM v_archivage_files WHERE checksum = '{}' AND is_expired = {};".format(checksum,False)
cur = DbHandler.connection.cursor()
# Executing the query.
cur.execute(sql)
# Fetching the results.
records= cur.fetchall()
cur.close()
# returning the results.
return records
def close_connection(self):
'''Déconnexion.'''
DbHandler.connection.close()
Classes
class DbHandler (host, user, password, database)-
Cette classe nous permet de manipuler la base de données qui reflète ce qui se passe au niveau du serveur distant.
Expand source code
class DbHandler: ''' ##**Cette classe nous permet de manipuler la base de données qui reflète ce qui se passe au niveau du serveur distant.** ''' connection = None '''C'est la variable qui nous permet d'intéragir avec notre base de données.''' def __init__(self, host, user, password, database): # Applying singleton pattern, to avoid instantiating the class more than once. if(DbHandler.connection != None): return # Connecting to the database. DbHandler.connection = psycopg2.connect(host=host, user=user, password=password, database=database) logger.info("Connection to database was established.") def find_invalid_records(self): '''Récupération d'un tuple qui contient les fichiers invalides.''' # Query to get all records where is_expired = true and is_valid = false. sql = "SELECT * FROM v_archivage_files WHERE is_expired = {} OR is_valid={};".format(True,False) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) # Fetching the results. records= cur.fetchall() cur.close() # returning the results. return records def update_all(self,checksum=""): '''La mise à jour de la validité des fichiers contenus dans la base de données en fonction du *Hash*.''' # we are using this function in order to update the validity of the records in the database. sql = "UPDATE archivage_files SET is_valid= {} WHERE checksum != '{}';".format(False,checksum) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) DbHandler.connection.commit() # Committing the changes to the database. cur.close() def find_all(self): '''Sélection des fichiers qui n'ont pas encore dépassé le délai d'expiration sous forme d'un tuple.''' # Query to get all records where is_expired = false. sql = "SELECT * FROM v_archivage_files WHERE is_expired = {};".format(False) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) # Fetching the results. records= cur.fetchall() cur.close() # returning the results. return records def add_record(self,checksum,expiration_date,filename): '''Ajout des fichiers qui sont caractérisés par : - **Nom du fichier** - **Hash** - **délai d'expiration**''' # inserting new record to our database sql = """INSERT INTO archivage_files(checksum,expiration_date,filename) VALUES(%s,%s,%s)""" cur = DbHandler.connection.cursor() cur.execute(sql, (checksum,expiration_date ,filename)) DbHandler.connection.commit() # Committing the changes to the database. cur.close() def delete_record(self,file_id): '''Suppression des fichiers.''' # Query to delete record based on file_id. sql = "DELETE FROM archivage_files WHERE file_id = {}".format(file_id) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) DbHandler.connection.commit() # Committing the changes to the database. cur.close() def update_record(self,checksum,is_valid,expiration_date): '''La mise à jour de la validité et le délai d'expiration des fichiers.''' sql = "UPDATE archivage_files SET expiration_date = '{}', is_valid= {} WHERE checksum = '{}';".format(expiration_date,is_valid,checksum) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) DbHandler.connection.commit() # Committing the changes to the database. cur.close() def find_record(self,checksum): '''Récupération des fichiers non expirés.''' # Query to get records based on checksum and is_expired = false. sql = "SELECT * FROM v_archivage_files WHERE checksum = '{}' AND is_expired = {};".format(checksum,False) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) # Fetching the results. records= cur.fetchall() cur.close() # returning the results. return records def close_connection(self): '''Déconnexion.''' DbHandler.connection.close()Class variables
var connection-
C'est la variable qui nous permet d'intéragir avec notre base de données.
Methods
def add_record(self, checksum, expiration_date, filename)-
Ajout des fichiers qui sont caractérisés par :
- Nom du fichier
- Hash
- délai d'expiration
Expand source code
def add_record(self,checksum,expiration_date,filename): '''Ajout des fichiers qui sont caractérisés par : - **Nom du fichier** - **Hash** - **délai d'expiration**''' # inserting new record to our database sql = """INSERT INTO archivage_files(checksum,expiration_date,filename) VALUES(%s,%s,%s)""" cur = DbHandler.connection.cursor() cur.execute(sql, (checksum,expiration_date ,filename)) DbHandler.connection.commit() # Committing the changes to the database. cur.close() def close_connection(self)-
Déconnexion.
Expand source code
def close_connection(self): '''Déconnexion.''' DbHandler.connection.close() def delete_record(self, file_id)-
Suppression des fichiers.
Expand source code
def delete_record(self,file_id): '''Suppression des fichiers.''' # Query to delete record based on file_id. sql = "DELETE FROM archivage_files WHERE file_id = {}".format(file_id) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) DbHandler.connection.commit() # Committing the changes to the database. cur.close() def find_all(self)-
Sélection des fichiers qui n'ont pas encore dépassé le délai d'expiration sous forme d'un tuple.
Expand source code
def find_all(self): '''Sélection des fichiers qui n'ont pas encore dépassé le délai d'expiration sous forme d'un tuple.''' # Query to get all records where is_expired = false. sql = "SELECT * FROM v_archivage_files WHERE is_expired = {};".format(False) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) # Fetching the results. records= cur.fetchall() cur.close() # returning the results. return records def find_invalid_records(self)-
Récupération d'un tuple qui contient les fichiers invalides.
Expand source code
def find_invalid_records(self): '''Récupération d'un tuple qui contient les fichiers invalides.''' # Query to get all records where is_expired = true and is_valid = false. sql = "SELECT * FROM v_archivage_files WHERE is_expired = {} OR is_valid={};".format(True,False) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) # Fetching the results. records= cur.fetchall() cur.close() # returning the results. return records def find_record(self, checksum)-
Récupération des fichiers non expirés.
Expand source code
def find_record(self,checksum): '''Récupération des fichiers non expirés.''' # Query to get records based on checksum and is_expired = false. sql = "SELECT * FROM v_archivage_files WHERE checksum = '{}' AND is_expired = {};".format(checksum,False) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) # Fetching the results. records= cur.fetchall() cur.close() # returning the results. return records def update_all(self, checksum='')-
La mise à jour de la validité des fichiers contenus dans la base de données en fonction du Hash.
Expand source code
def update_all(self,checksum=""): '''La mise à jour de la validité des fichiers contenus dans la base de données en fonction du *Hash*.''' # we are using this function in order to update the validity of the records in the database. sql = "UPDATE archivage_files SET is_valid= {} WHERE checksum != '{}';".format(False,checksum) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) DbHandler.connection.commit() # Committing the changes to the database. cur.close() def update_record(self, checksum, is_valid, expiration_date)-
La mise à jour de la validité et le délai d'expiration des fichiers.
Expand source code
def update_record(self,checksum,is_valid,expiration_date): '''La mise à jour de la validité et le délai d'expiration des fichiers.''' sql = "UPDATE archivage_files SET expiration_date = '{}', is_valid= {} WHERE checksum = '{}';".format(expiration_date,is_valid,checksum) cur = DbHandler.connection.cursor() # Executing the query. cur.execute(sql) DbHandler.connection.commit() # Committing the changes to the database. cur.close()