Advertisement
Guest User

Untitled

a guest
Mar 13th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { User } from "../utils/user";
  2. const mysql = require("mysql");
  3.  
  4. export class Maria {
  5.   private db_server: string;
  6.   private db_name: string;
  7.   private db_user: string;
  8.   private db_pass: string;
  9.  
  10.   private connection = null;
  11.  
  12.   public static maria = null;
  13.  
  14.   public constructor(
  15.     serveur: string,
  16.     name: string,
  17.     user: string,
  18.     pass: string
  19.   ) {
  20.     this.db_server = serveur;
  21.     this.db_name = name;
  22.     this.db_user = user;
  23.     this.db_pass = pass;
  24.  
  25.     this.connection = this.getConnection();
  26.  
  27.     Maria.maria = this;
  28.   }
  29.  
  30.   public static getMariaDb(): Maria {
  31.     if (Maria.maria == null) console.log("Error: u should init MariaDB");
  32.     return Maria.maria;
  33.   }
  34.  
  35.   private getConnection() {
  36.     let connection = mysql.createConnection({
  37.       host: this.db_server,
  38.       user: this.db_user,
  39.       password: this.db_pass,
  40.       database: this.db_name
  41.     });
  42.     connection.connect(err => {
  43.       if (err) throw err;
  44.       console.log(`MariaDB: connected to ${this.db_server}:${this.db_user}`);
  45.     });
  46.     return connection;
  47.   }
  48.  
  49.   private formatDate(date: Date): string {
  50.     let month = "" + (date.getMonth() + 1);
  51.     let day = "" + date.getDate();
  52.     let year = date.getFullYear();
  53.  
  54.     if (month.length < 2) month = "0" + month;
  55.     if (day.length < 2) day = "0" + day;
  56.  
  57.     return [year, month, day].join("-");
  58.   }
  59.  
  60.   public getUsers(callback) {
  61.     this.connection.query("SELECT * FROM utilisateur", (err, rows) => {
  62.       if (err) {
  63.         throw err;
  64.       } else {
  65.         callback(rows);
  66.       }
  67.     });
  68.   }
  69.  
  70.   public getUser(mail: string, password: string, callback) {
  71.     let query =
  72.       "SELECT * FROM utilisateur WHERE utl_mail = ? AND utl_mot_de_passe = ?";
  73.     let param = [mail, password];
  74.  
  75.     this.connection.query(query, param, (err, rows) => {
  76.       if (err) {
  77.         throw err;
  78.       } else {
  79.         callback(rows);
  80.       }
  81.     });
  82.   }
  83.  
  84.   public getCountUser(mail: string, callback) {
  85.     let query = "SELECT COUNT(*) as nb FROM utilisateur WHERE utl_mail = ?";
  86.     let param = [mail];
  87.  
  88.     this.connection.query(query, param, (err, row) => {
  89.       if (err) {
  90.         throw err;
  91.       } else {
  92.         callback(row[0]);
  93.       }
  94.     });
  95.   }
  96.  
  97.   public getUserById(id: Int16Array, callback) {
  98.     let query = "SELECT * FROM utilisateur WHERE utl_id = ?";
  99.     let param = [id];
  100.  
  101.     this.connection.query(query, param, (err, rows) => {
  102.       if (err) {
  103.         throw err;
  104.       } else {
  105.         callback(rows);
  106.       }
  107.     });
  108.   }
  109.  
  110.   public addUser(user: User, callback): void {
  111.     this.getCountUser(user.getMail(), res => {
  112.       if (res != null && res.nb === 0) {
  113.         let query =
  114.           "INSERT INTO utilisateur (utl_pseudo, utl_nom, utl_prenom, utl_date_naissance, utl_mail, utl_mot_de_passe) VALUES (?, ?, ?, ?, ?, ?)";
  115.         let user_date = this.formatDate(user.getDateNaissance());
  116.         let params = [
  117.           user.getPseudo(),
  118.           user.getNom(),
  119.           user.getPrenom(),
  120.           user_date,
  121.           user.getMail(),
  122.           user.getMotDePasse()
  123.         ];
  124.  
  125.         this.connection.query(query, params, (err, res) => {
  126.           if (err) {
  127.             throw err;
  128.           } else {
  129.             callback({
  130.               success: true,
  131.               message: "u have just signed up"
  132.             });
  133.           }
  134.         });
  135.       } else {
  136.         callback({
  137.           success: false,
  138.           message: "Email already exist"
  139.         });
  140.       }
  141.     });
  142.   }
  143.  
  144.   public updateUser(user: User, callback): void {
  145.     let query =
  146.       "UPDATE utilisateur SET utl_pseudo = ?, utl_nom = ?, utl_prenom = ?, utl_date_naissance = ?, utl_mail = ?, utl_mot_de_passe = ? WHERE utl_id = ?";
  147.     let user_date = this.formatDate(user.getDateNaissance());
  148.     let params = [
  149.       user.getPseudo(),
  150.       user.getNom(),
  151.       user.getPrenom(),
  152.       user_date,
  153.       user.getMail(),
  154.       user.getMotDePasse(),
  155.       user.getId()
  156.     ];
  157.     this.connection.query(query, params, (err, res) => {
  158.       if (err) {
  159.         throw err;
  160.       } else {
  161.         callback(res);
  162.       }
  163.     });
  164.   }
  165.  
  166.   public removeUser(user_id: number, callback): void {
  167.     let query = "DELETE FROM utilisateur WHERE utl_id = ?";
  168.     let param = [user_id];
  169.  
  170.     this.connection.query(query, param, (err, res) => {
  171.       if (err) {
  172.         throw err;
  173.       } else {
  174.         callback(res);
  175.       }
  176.     });
  177.   }
  178.  
  179.   public cleanUsers(callback): void {
  180.     let query = "DELETE FROM utilisateur WHERE 1";
  181.     this.connection.query(query, (err, res) => {
  182.       if (err) {
  183.         throw err;
  184.       } else {
  185.         callback(res);
  186.       }
  187.     });
  188.   }
  189.  
  190.   public resetIncrement(start: number): void {
  191.     let query = "ALTER TABLE utilisateur auto_increment = ?";
  192.     let param = [start];
  193.  
  194.     this.connection.query(query, param, (err, res) => {
  195.       if (err) {
  196.         throw err;
  197.       }
  198.     });
  199.   }
  200.  
  201.   public close() {
  202.     this.connection.end();
  203.   }
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement