summaryrefslogtreecommitdiff
path: root/app_alphajob/database/dbmain.py
diff options
context:
space:
mode:
authorDebulois <quentin@debulois.fr>2022-04-20 13:17:36 +0200
committerDebulois <quentin@debulois.fr>2022-04-20 13:17:36 +0200
commit4c4f70bf6eb88a419add86e182d3080674196433 (patch)
treede407cee641f168c5ac325aa6a8b695ee04a429b /app_alphajob/database/dbmain.py
parent41243ec2137bac39225231c0834f9d611fe94728 (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.py217
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]