diff options
Diffstat (limited to 'src/guff.cr')
| -rw-r--r-- | src/guff.cr | 27 | 
1 files changed, 18 insertions, 9 deletions
| diff --git a/src/guff.cr b/src/guff.cr index 1e536cf..8ea29fa 100644 --- a/src/guff.cr +++ b/src/guff.cr @@ -2711,14 +2711,23 @@ module Guff        end        class InitAction < Action +        class Data +          YAML.mapping({ +            init_sql:   Array(String), +            add_user:   String, +            test_posts: Array(String), +          }) + +          def self.load(system_dir : String) : Data +            self.from_yaml(File.read(File.join(system_dir, "init.yaml"))) +          end +        end +          def initialize(config : Config)            super(config)            # read init data -          @data = YAML.parse(File.read(File.join( -            @config.system_dir, -            "init.yaml" -          ))) +          @data = Data.load(@config.system_dir)          end          def run @@ -2726,8 +2735,8 @@ module Guff            Dir.mkdir(@config.data_dir) unless Dir.exists?(@config.data_dir)            Guff::Database.new(@config.db_path) do |db| -            @data["sql"]["init"].each do |sql| -              db.query(sql.as_s) +            @data.init_sql.each do |sql| +              db.query(sql)              end              # gen random password and add admin user @@ -2747,7 +2756,7 @@ module Guff            email     : String,            password  : String          ) : Int64 -          db.query(@data["sql"]["add_user"].as_s, [ +          db.query(@data.add_user, [              name,              email,              Password.create(password), @@ -2758,8 +2767,8 @@ module Guff          private def add_test_posts(db)            # STDERR.puts "DEBUG: adding test data" -          @data["sql"]["test_posts"].each do |sql| -            db.query(sql.as_s) +          @data.test_posts.each do |sql| +            db.query(sql)            end          end        end | 
