def initialize(dbh, category_id)
raise "Invalid DBH" if not dbh.kind_of?(DBI::DatabaseHandle)
raise "Bad Record ID" if dbh.select_one("select * from category where category_id=?", category_id).nil?
@dbh = dbh
@id = category_id
@recipes = ObservableArray.new
@dbh.select_all("select recipe_id from recipe_category where category_id=?",@id).each do |row|
@recipes << $replicator.get('recipe', row['recipe_id'])
end
@recipes.add_observer {
old_recipes = []
@dbh.select_all("select recipe_id from recipe_category where category_id=?",@id).each do |row|
old_recipes << $replicator.get('recipe', row['recipe_id'])
end
(@recipes - old_recipes).each do |recipe|
@dbh.do("insert into recipe_category (category_id,recipe_id) values (?,?)",@id,recipe.id)
@dbh.commit
end
(old_recipes - @recipes).each do |recipe|
@dbh.do("delete from recipe_category where category_id=? and recipe_id=?",@id,recipe.id)
@dbh.commit
end
}
end