Add a template of trigger.
This commit is contained in:
parent
aa51e07211
commit
0f6607b54d
1 changed files with 58 additions and 0 deletions
58
spec/test-triggers.cr
Normal file
58
spec/test-triggers.cr
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
require "spec"
|
||||||
|
require "./db-cars.cr"
|
||||||
|
|
||||||
|
class DODB::Trigger::Virtual(V) < DODB::Trigger(V)
|
||||||
|
# Indexes a value, used for **internal operations**.
|
||||||
|
def index(key : String, value : V)
|
||||||
|
puts "index: key #{key}, value #{value}"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Removes the index of a value, used for **internal operations**.
|
||||||
|
def deindex(key : String, value : V)
|
||||||
|
puts "deindex: key #{key}, value #{value}"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Verifies whether a new value will create a collision with the index of
|
||||||
|
# currently stored value, used for **internal operations**.
|
||||||
|
def check!(key : String, value : V, old_value : V?)
|
||||||
|
puts "check!: key #{key}, value #{value}, old_value #{old_value}"
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
|
# Name of the index, such as *id* or *color* for example.
|
||||||
|
# This is an arbitrary value, mostly to create the index directory.
|
||||||
|
def name : String
|
||||||
|
name = "some name"
|
||||||
|
puts "name: #{name}"
|
||||||
|
name
|
||||||
|
end
|
||||||
|
|
||||||
|
# Directory where the values will be written.
|
||||||
|
def trigger_directory : String
|
||||||
|
dir = "something"
|
||||||
|
puts "trigger directory: #{dir}"
|
||||||
|
dir
|
||||||
|
end
|
||||||
|
|
||||||
|
# Removes all the index entries, removes the `#trigger_directory` by default.
|
||||||
|
def nuke_trigger
|
||||||
|
puts "nuke trigger"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
car0 = Car.new "Corvet-0", "red", [] of String
|
||||||
|
car1 = Car.new "Corvet-1", "red", [] of String
|
||||||
|
car2 = Car.new "Corvet-2", "red", [] of String
|
||||||
|
car3 = Car.new "Corvet-3", "red", [] of String
|
||||||
|
|
||||||
|
db = SPECDB::Common(Car).new "test-triggers", 2
|
||||||
|
db.triggers << DODB::Trigger::Virtual(Car).new
|
||||||
|
db << car0
|
||||||
|
db.delete 0
|
||||||
|
db << car0
|
||||||
|
db << car1
|
||||||
|
carm = car1
|
||||||
|
carm.name = "modified"
|
||||||
|
db << carm
|
||||||
|
db << car2
|
||||||
|
db << car3
|
Loading…
Add table
Reference in a new issue