diff options
| author | Debulois <quentin@debulois.fr> | 2022-04-20 13:17:36 +0200 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-04-20 13:17:36 +0200 |
| commit | 4c4f70bf6eb88a419add86e182d3080674196433 (patch) | |
| tree | de407cee641f168c5ac325aa6a8b695ee04a429b /app_alphajob/database/dbmain.py | |
| parent | 41243ec2137bac39225231c0834f9d611fe94728 (diff) | |
Mis en place de la structure orientée objet
Diffstat (limited to 'app_alphajob/database/dbmain.py')
| -rw-r--r-- | app_alphajob/database/dbmain.py | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/app_alphajob/database/dbmain.py b/app_alphajob/database/dbmain.py deleted file mode 100644 index 602cec6..0000000 --- a/app_alphajob/database/dbmain.py +++ /dev/null @@ -1,217 +0,0 @@ - -############################################################################ -# # -# Description: Partie commune des deux ensembles de méthodes # -# pour la gestion de la BDD # -# # -############################################################################ - -import mysql.connector -from passlib.hash import sha512_crypt - -# const si CAPS -# https://www.w3schools.com/python/python_mysql_getstarted.asp -# https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html -# https://stackoverflow.com/questions/11565487/python-equivalent-of-php-mysql-fetch-array - - -class DbMain(): - # **************************************************************************** - # INFOS GLOBAL ET DE CONNEXION - # **************************************************************************** - # Pour gérer si "en production" - DEBUG = False - # Configuration du serveur MYSQL / MARIADB - HOST = "127.0.0.1" - USER = "root" - PASSWORD = "" - DATABASE = "alphajob" - - # **************************************************************************** - # DECLARATION DES TABLES - # **************************************************************************** - # UserAccount, infos du compte nécessaire à la connection - CREATETABLEUSERACCOUNT = """CREATE TABLE IF NOT EXISTS `alphajob`.`userAccount` ( - `userId` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `email` VARCHAR(128) NOT NULL, - `password` VARCHAR(128) NOT NULL, - `tokenAutoLogin` VARCHAR(128) NULL DEFAULT NULL, - `inscriptionDate` TIMESTAMP NOT NULL, - `userStatus` TINYINT(1) UNSIGNED NOT NULL, - PRIMARY KEY (`userId`) - ) - ENGINE = InnoDB - DEFAULT CHARACTER SET = utf8;""" - - # Infos complémentaires des utilisateur, liée à userAccount par userId - CREATETABLEUSERINFO = """CREATE TABLE IF NOT EXISTS `alphajob`.`userInfo` ( - `lastname` VARCHAR(128) NOT NULL, - `firstname` VARCHAR(128) NOT NULL, - `phoneNumber` VARCHAR(10) NOT NULL, - `adress` VARCHAR(128) NOT NULL, - `zipCode` VARCHAR(6) NOT NULL, - `city` VARCHAR(128) NOT NULL, - `degree` VARCHAR(128) NULL DEFAULT NULL, - `capability` VARCHAR(256) NULL DEFAULT NULL, - `description` VARCHAR(256) NULL DEFAULT NULL, - `userId` INT UNSIGNED NOT NULL, - PRIMARY KEY (`userId`), - INDEX `fk_userinfo_userId_idx` (`userId` ASC) VISIBLE, - CONSTRAINT `fk_userinfo_userId` - FOREIGN KEY (`userId`) - REFERENCES `alphajob`.`userAccount` (`userId`) - ON DELETE CASCADE - ON UPDATE CASCADE - ) - ENGINE = InnoDB - DEFAULT CHARACTER SET = utf8;""" - - # Liste des categories d'emploie possible - CREATETABLEJOBCATEGORY = """CREATE TABLE IF NOT EXISTS `alphajob`.`jobCategory` ( - `jobCategoryId` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `jobCategoryNameEn` VARCHAR(128) NOT NULL, - `jobCategoryNameFr` VARCHAR(128) NOT NULL, - PRIMARY KEY (`jobCategoryId`) - ) - ENGINE = InnoDB - DEFAULT CHARACTER SET = utf8;""" - - # Assosications des emploies à un utilisateur - CREATETABLEUSERJOB = """CREATE TABLE IF NOT EXISTS `alphajob`.`userJob` ( - `userId` INT UNSIGNED NOT NULL, - `jobCategoryId` INT UNSIGNED NOT NULL, - INDEX `fk_userInfo_userId_idx` (`userId` ASC) VISIBLE, - INDEX `fk_jobCategory_jobCategoryId_idx` (`jobCategoryId` ASC) VISIBLE, - CONSTRAINT `fk_userJob_userId` - FOREIGN KEY (`userId`) - REFERENCES `alphajob`.`userAccount` (`userId`) - ON DELETE CASCADE - ON UPDATE CASCADE, - CONSTRAINT `fk_userJob_jobCategoryId` - FOREIGN KEY (`jobCategoryId`) - REFERENCES `alphajob`.`jobCategory` (`jobCategoryId`) - ON DELETE CASCADE - ON UPDATE CASCADE - ) - ENGINE = InnoDB - DEFAULT CHARACTER SET = utf8;""" - - # Infos sur les missions effectuées, liée à userAccount par userId et consultantId - CREATETABLEMISSION = """CREATE TABLE IF NOT EXISTS `alphajob`.`mission` ( - `missionId` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `date` TIMESTAMP NOT NULL, - `subject` VARCHAR(128) NULL DEFAULT NULL, - `note` TINYINT(1) UNSIGNED NULL DEFAULT NULL, - `review` VARCHAR(256) NULL DEFAULT NULL, - `acceptedByPro` TIMESTAMP NULL DEFAULT NULL, - `validatedByClient` TIMESTAMP NULL DEFAULT NULL, - `validatedByPro` TIMESTAMP NULL DEFAULT NULL, - `clientId` INT UNSIGNED NOT NULL, - `proId` INT UNSIGNED NOT NULL, - `jobCategoryId` INT UNSIGNED NOT NULL, - PRIMARY KEY (`missionId`), - INDEX `fk_mission_clientId_idx` (`clientId` ASC) VISIBLE, - INDEX `fk_mission_proId_idx` (`proId` ASC) VISIBLE, - INDEX `fk_mission_jobCategoryId_idx` (`jobCategoryId` ASC) VISIBLE, - CONSTRAINT `fk_mission_clientId` - FOREIGN KEY (`clientId`) - REFERENCES `alphajob`.`userAccount` (`userId`) - ON DELETE CASCADE - ON UPDATE CASCADE, - CONSTRAINT `fk_mission_proId` - FOREIGN KEY (`proId`) - REFERENCES `alphajob`.`userAccount` (`userId`) - ON DELETE CASCADE - ON UPDATE CASCADE, - CONSTRAINT `fk_mission_jobCategoryId` - FOREIGN KEY (`jobCategoryId`) - REFERENCES `alphajob`.`jobCategory` (`jobCategoryId`) - ON DELETE CASCADE - ON UPDATE CASCADE - ) - ENGINE = InnoDB - DEFAULT CHARACTER SET = utf8""" - - # Noms des tables - TABLEUSERACCOUNT = "userAccount" - TABLEUSERINFO = "userInfo" - TABLEJOBCATEGORY = "jobCategory" - TABLEUSERJOB = "userJob" - TABLEMISSION = "mission" - - # **************************************************************************** - # FONCTIONS PRINCIPALES - # **************************************************************************** - # Constructeur, fonction "auto" déclenchée à l'instanciation - def __init__(self): - if self.DEBUG: - self.conn = mysql.connector.connect( - host=self.HOST, - user=self.USER, - password=self.PASSWORD, - database=self.DATABASE, - raise_on_warnings=self.DEBUG - ) - else: - self.conn = mysql.connector.connect( - host=self.HOST, - user=self.USER, - password=self.PASSWORD, - database=self.DATABASE - ) - self.cur = self.conn.cursor() - - # Création de la DB si elle n'existe pas - def create_db(self): - reqInitDb = "CREATE DATABASE IF NOT EXISTS " + self.DATABASE - self.cur.execute(reqInitDb) - - # Sélection de la DB - def select_db(self): - reqSelectDb = "USE " + self.DATABASE - self.cur.execute(reqSelectDb) - - # Création des tables si elles n'existent pas - def create_table(self): - # userAccount - reqInitUserAccount = self.CREATETABLEUSERACCOUNT - self.cur.execute(reqInitUserAccount) - # userInfo - reqInitUserInfo = self.CREATETABLEUSERINFO - self.cur.execute(reqInitUserAccount) - # jobCategory - reqInitJobCategory = self.CREATETABLEJOBCATEGORY - self.cur.execute(reqInitJobCategory) - # userJob - reqInitUserJob = self.CREATETABLEUSERJOB - self.cur.execute(reqInitUserJob) - # mission - reqInitMission = self.CREATETABLEMISSION - self.cur.execute(reqInitMission) - - # Déclenche les méthodes pour créer la BDD - def init(self): - self.create_db() - self.select_db() - self.create_table() - - # Chiffre la data reçue - def crypt_pass(self, password): - return sha512_crypt.hash(password, rounds=10000) - - # Prépare la requète pour mitiger (se protéger) les injections SQL et - # initialise si nécessaire la BDD à chaque requète - def exec_cmd(self, req, arg=None): - self.init() - if arg: - self.cur.execute(req, arg) - else: - self.cur.execute(req) - - # Vérifie si l'email existe dans la table userAccount de la BDD - def check_exist_email(self, email): - reqCheckEmailExist = "SELECT EXISTS(SELECT * FROM " + \ - self.TABLEUSERACCOUNT + " WHERE email = %s)" - self.exec_cmd(reqCheckEmailExist, [email]) - # Retourne 1 si existe, sinon 0 - return self.cur.fetchall()[0][0] |
