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