Query builder

Le but cet exercice est d'écrire une classe qui permet de générer des requêtes SQL en utilisant le builder pattern.

💡 Pas de panique, tu n'as pas besoin de comprendre le SQL pour faire cet exercice. L'important c'est juste de générer la bonne chaîne de caractère.

L'idée c'est que tu puisses utiliser la classe comme dans ces exemples :

const query = new SQLQuery();
console.log(query.select(['name', 'id']).from('users').where('id', '=', 4).sql);
// 👆 affiche 'SELECT name, id FROM users WHERE id = 4'
 
const otherQuery = new SQLQuery();
console.log(otherQuery.select(['title', 'author']).from('posts').sql);
// 👆 affiche 'SELECT title, author FROM posts '
const query = new SQLQuery();
console.log(query.select(['name', 'id']).from('users').where('id', '=', 4).sql);
// 👆 affiche 'SELECT name, id FROM users WHERE id = 4'
 
const otherQuery = new SQLQuery();
console.log(otherQuery.select(['title', 'author']).from('posts').sql);
// 👆 affiche 'SELECT title, author FROM posts '
  1. Pour ce faire, la classe SQLQuerySQLQuery doit contenir un attribut sqlsql qui sera mis à jour à chaque fois qu'on appelle une méthode.
  2. La méthode select(columns)select(columns) prend un tableau de colonnes columnscolumns et modifie sqlsql pour ajouter 'SELECT ''SELECT ' suivi des noms de colonnes séparés par des virgules.
  3. La méthode from(table)from(table) ajoute 'FROM nom_de_la_table ''FROM nom_de_la_table ' à sqlsql
  4. La méthode where(column, operator, value)where(column, operator, value) ajoute 'WHERE ''WHERE ' suivi de la colonne, l'opérator puis la valeur séparés par des espaces ('WHERE age > 10''WHERE age > 10' par exemple)

📖 Revoir le cours

Tu es peut être passé·e un peu vite sur certaines notions abordées dans le guide précédent n’hésite pas à aller y jeter un coups d'œil 👀

Reading cat

Oups, un test a échoué 😱