53 lines
1.1 KiB
Ruby
53 lines
1.1 KiB
Ruby
require 'sequel'
|
|
|
|
task "export:sqlite" => [:db, "export:sqlite:schema"] do
|
|
|
|
#first insert the given_names
|
|
@names = @output[:names]
|
|
@meta = @output[:metadata]
|
|
|
|
puts "dumping given names"
|
|
@db.given_names.each do |entry|
|
|
row = @names.insert :name => entry.name, :type => "given"
|
|
|
|
entry.metadata_without_nesting.each do |key, value|
|
|
@meta.insert :key => key, :value => value
|
|
end
|
|
end
|
|
|
|
# puts "dumping family names"
|
|
# @db.family_names.each do |entry|
|
|
# @names << {:name => entry.name, :type => "family"}
|
|
# end
|
|
|
|
end
|
|
|
|
namespace "export:sqlite" do
|
|
task :db => "out" do
|
|
|
|
existing = Dir["out/*.sqlite"].length
|
|
path = "out/names#{(".#{existing}" if existing > 0)}.sqlite"
|
|
|
|
@output = Sequel.sqlite(path)
|
|
end
|
|
|
|
task :schema => "export:sqlite:db" do
|
|
|
|
@output.create_table :names do
|
|
primary_key :id
|
|
String :name
|
|
String :type
|
|
|
|
index [:type, :name]
|
|
end
|
|
|
|
@output.create_table :metadata do
|
|
foreign_key :name_id, :names
|
|
String :key
|
|
String :value
|
|
|
|
index [:name_id, :key]
|
|
end
|
|
|
|
end
|
|
end |