def initialize(dbh, cookbook_id)
raise "Invalid DBH" if not dbh.kind_of?(DBI::DatabaseHandle)
raise "Bad Record ID" if dbh.select_one("select * from cookbook where cookbook_id=?", cookbook_id).nil?
@dbh = dbh
@id = cookbook_id
@categories = ObservableArray.new
@dbh.select_all("select category_id from category where cookbook_id=?",@id).each do |row|
@categories << $replicator.get('category', row['category_id'])
end
@categories.add_observer {
old_categories = []
@dbh.select_all("select category_id from category where cookbook_id=?",@id).each do |row|
old_categories << $replicator.get('category', row['category_id'])
end
(@categories - old_categories).each do |category|
@dbh.do("update category set cookbook_id=? where category_id=?",@id,category.id)
end
(old_categories - @categories).each do |category|
@dbh.do("delete from category where category_id=?",category.id)
@dbh.do("delete from recipe_category where category_id=?",category.id)
end
}
end