require "./src/dodb.cr" class Voiture include JSON::Serializable property nom : String property couleur : String property tags : Array(String) def initialize(@nom, @couleur, @tags) end end voitures = DODB::Storage::Basic(Voiture).new "db-voitures" voiture_par_nom = voitures.new_index "nom", &.nom voiture_par_couleur = voitures.new_partition "couleur", &.couleur voiture_par_tag = voitures.new_tags "étiquettes", &.tags voitures << Voiture.new "Corvet", "rouge", ["jolie", "classique"] voitures << Voiture.new "Bullet-GT", "bleue", ["jolie", "rapide"] # La Corvet devient bleue. voiture = voiture_par_nom.get "Corvet" voiture.couleur = "bleue" voiture_par_nom.update voiture # La Bullet-GT change de nom. voiture = voiture_par_nom.get "Bullet-GT" voiture.nom = "Not-So-Fast-Bullet-GT" voiture_par_nom.update "Bullet-GT", voiture # Le nom (l'indice) a changé. # Comme nous le savons tous, les jolies voitures sont également chères. voiture_par_tag.get("jolie").each do |voiture| voiture.tags << "chère" voiture_par_nom.update voiture end # Suppression des voitures bleues et classiques. voiture_par_couleur.delete "bleue", do |voiture| voiture.tags.includes? "classique" end voitures.each do |voiture| pp! voiture end