dodb.cr/exemple-linuxfr.cr

48 lines
1.2 KiB
Crystal

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