From 73e96ddf59b37d7f34846c9469a86aeaabc40c78 Mon Sep 17 00:00:00 2001 From: Philippe PITTOLI Date: Sat, 11 May 2024 14:21:42 +0200 Subject: [PATCH] Enable cars not to have color or keywords. --- spec/db-cars.cr | 50 +++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/spec/db-cars.cr b/spec/db-cars.cr index f65c52c..f360c70 100644 --- a/spec/db-cars.cr +++ b/spec/db-cars.cr @@ -7,9 +7,9 @@ require "./spec-database.cr" class Car include JSON::Serializable - property name : String # unique to each instance (1-1 relations) - property color : String # a simple attribute (1-n relations) - property keywords : Array(String) # tags about a car, example: "shiny" (n-n relations) + property name : String # unique to each instance (1-1 relations) + property color : String | DODB::NoIndex # a simple attribute (1-n relations) + property keywords : Array(String) | DODB::NoIndex # tags about a car, example: "shiny" (n-n relations) def_clone @@ -31,27 +31,27 @@ class Car end def ram_indexes(storage : DODB::Storage) - n = storage.new_RAM_index "name", &.name - c = storage.new_RAM_partition "color", &.color - k = storage.new_RAM_tags "keyword", &.keywords + n = storage.new_nilable_RAM_index "name", &.name + c = storage.new_nilable_RAM_partition "color", &.color + k = storage.new_nilable_RAM_tags "keyword", &.keywords return n, c, k end def cached_indexes(storage : DODB::Storage) - n = storage.new_index "name", &.name - c = storage.new_partition "color", &.color - k = storage.new_tags "keyword", &.keywords + n = storage.new_nilable_index "name", &.name + c = storage.new_nilable_partition "color", &.color + k = storage.new_nilable_tags "keyword", &.keywords return n, c, k end def uncached_indexes(storage : DODB::Storage) - n = storage.new_uncached_index "name", &.name - c = storage.new_uncached_partition "color", &.color - k = storage.new_uncached_tags "keyword", &.keywords + n = storage.new_nilable_uncached_index "name", &.name + c = storage.new_nilable_uncached_partition "color", &.color + k = storage.new_nilable_uncached_tags "keyword", &.keywords return n, c, k end -def add_cars(storage : DODB::Storage, nb_iterations : Int32, from = 0) +def add_cars(storage : DODB::Storage, nb_iterations : Int32, from = 0, max_it_tags = 5000) i = from car1 = Car.new "Corvet", "red", [ "shiny", "impressive", "fast", "elegant" ] car2 = Car.new "Bullet-GT", "blue", [ "shiny", "fast", "expensive" ] @@ -66,11 +66,25 @@ def add_cars(storage : DODB::Storage, nb_iterations : Int32, from = 0) car4.name = "Ford-5-#{i}" car5.name = "C-MAX-#{i}" - storage << car1 - storage << car2 - storage << car3 - storage << car4 - storage << car5 + if i >= max_it_tags + car1.color = DODB.no_index + car2.color = DODB.no_index + car3.color = DODB.no_index + car4.color = DODB.no_index + car5.color = DODB.no_index + + car1.keywords = DODB.no_index + car2.keywords = DODB.no_index + car3.keywords = DODB.no_index + car4.keywords = DODB.no_index + car5.keywords = DODB.no_index + end + + storage << car1.clone + storage << car2.clone + storage << car3.clone + storage << car4.clone + storage << car5.clone i += 1 #STDOUT.write "\radding value #{i}".to_slice end