Skip to content

Instantly share code, notes, and snippets.

import org.springframework.beans.FatalBeanException;
import org.springframework.util.Assert;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public final class BeanUtils
extends org.springframework.beans.BeanUtils {

Le cabinet vétérinaire "Mille pattes" souhaite créer un prototype d'API qui lui permettrait d'accéder à différentes données :

  • la liste des membres du cabinet vétérinaire, avec : leurs nom, prénom, date de naissance, poste, date d'embauche
  • la liste des animaux, avec : leurs nom, date de naissance, race, description de son état, les nom et prénom du propriétaire, le numéro du propriétaire
  • la liste des médicaments, avec : leurs nom, marque, prix unitaire hors taxes, quantité en stock​

Dans un premier temps, réfléchissez aux différentes entités qu'il faudra créer, et modélisez-les à l'aide d'un MCD.

Pour simplifier cet exercice, il n'y aura pas d'association à créer entre les entités.

@bastienapp
bastienapp / spring-whereismyband.md
Last active June 28, 2023 10:17
Where is my band?

Le site Where is My Band s'adresse à deux profils :

  • des musiciens qui s'inscrivent pour rechercher de groupes
  • des groupes qui s'inscrivent pour poster des annonces de recherche de musiciens

Un musicien devra créer un compte avec les informations suivantes :

  • un email (unique)
  • un mot de passe
  • sa ville

Créer un site de liste de cadeau (wishlist) dont le but sera le suivant :

  • un utilisateur non connecté peut accéder à une liste de cadeaux qu'un autre utilisateur a partagé via une URL (du type /slug-du-nom-de-la-liste-uuid)
  • une liste de cadeau présente un nom, une description, un date limite, une url unique de partage, ainsi qu'un ensemble de cadeaux
  • chaque cadeau est composé d'une image, d'un nom, d'une description et d'un prix
  • un utilisateur connecté pourra créer et administrer ses propres listes de cadeaux, et ajouter/modifier/supprimer des cadeaux aux listes (chaque cadeau devra être créé de zéro, pas de sélection à partir d'une liste). Chaque liste aura une url unique générée à partir de son nom et de son uuid
  • un utilisateur pourra créer un compte avec comme données obligatoires son email (unique), son mot de passe et un pseudonyme. Un champ de présentation sera optionnel.
  • le mot de passe devra être encrypté (bcrypt ou argon2), avec au minimum 12 caractères comprenant des majuscules, des min

Importe la base de données de super-héros suivante en local.

Ensuite, réalise les requêtes suivantes (pense à les garder les requêtes de côté au fur et à mesure) :

  • en utilisant ORDER BY et LIMIT, récupère le nom du super-héros le plus léger.
  • en utilisant ORDER BY et LIMIT, récupère le nom du super-héros le plus grand.
  • en utilisant INNER JOIN, récupère le nom des super-héros et leurs éditeurs respectifs (publisher).
  • récupère le nom des super-héros, son genre et leurs alignements respectifs.
  • récupère le nom des super-héros maîtrisant le super-pouvoir "Levitation".
  • en utilisant LEFT JOIN ou RIGHT JOIN, récupère le nom des super-héros n'ayant pas de super-pouvoirs.

Vous avez été contacté par Francky Vincent, star de la chanson. Ce dernier souhaite créer une application qui lui permettrait d'automatiser le passage de commandes de son nouveau restaurant.

En effet, Francky Vincent avait déjà ouvert un restaurant par le passé, mais a eu une mauvaise expérience avec son personnel. Après plusieurs années à travailler sur une solution, il a enfin eu une idée de génie : il souhaite tout automatiser, du passage de la commande jusqu'à la préparation des plats. Ainsi, plus de problèmes avec le personnel !

La première étape de la création de ce restaurant nouvelle génération réside dans le passage des commandes sur tablette tactile : il vous a donc embauché pour réaliser un prototype d'API.

Les spécifications :

Un client doit pouvoir passer une commande, en sélectionnant des plats dans une liste. Un plat possède une catégorie, ex: boisson, entrée, plat, dessert (la liste est amenée à changer), un nom, une description et un prix affiché en TTC (mais stocké en HT).

L'entreprise Luggage Everywhere veut créer le "Airbnb des bagages".

Vous partez en voyage en Suède et avez une escale de plusieurs heures à Amsterdam ? Plutôt que de vous balader avec vos lourds bagages, vous pouvez les déposer dans un magasin ou un hôtel partenaire, qui les gardera le temps de votre balade.

Ce que vous devez faire :

Réalisez le MCD, à faire valider par le formateur. Ensuite, passez au MLD, et une fois ce dernier validé, créez un script contenant les requêtes de création de la base de données, des tables et quelques données d'exemple, en vous basant la transcription de l'échange avec Luggage Everywhere :​

Dans le jargon de Luggage Everywhere, un partenaire est une entreprise (magasin ou hôtel) dans laquelle il est possible d'effectuer un dépôt de bagage. Un client correspond à un utilisateur du site, qui effectue des dépôts de bagages chez un ou plusieurs partenaires.

@bastienapp
bastienapp / docker-postgres.md
Last active October 28, 2024 07:27
PostgreSQL docker commands

Install and launch PostgreSQL Docker image (change the password):

docker run --name postgres -d \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=change-password-here \
    -e TZ='Europe/Paris' \
    -e POSTGRES_INITDB_ARGS='--encoding=UTF-8 --lc-collate=C --lc-ctype=C' \
    --restart unless-stopped \
    postgres:latest
@bastienapp
bastienapp / user.md
Created December 2, 2022 11:01
Documenting your REST API

Show one user

  • URL

    /users/:id

  • Method:

    GET