require 'dotenv/load'
require 'sequel'
require 'sequel/extensions/seed'

require_relative './lib/full_odds'
require_relative './lib/full_odds/db'

def create_migration_or_seed(type, args)
  name = args[:name] || type 
  timestamp = Time.now.strftime("%Y%m%d%H%M%S")
  Dir.mkdir("lib/full_odds/db/#{type}s") unless Dir.exist?("lib/full_odds/db/#{type}s")
  filename = "lib/full_odds/db/#{type}s/#{timestamp}_#{name}.rb"
  filename
end

namespace :db do
  desc "Run migrations"
  task :migrate do
    Sequel.extension :migration
    db = FO::DB.connection
    Sequel::Migrator.run(db, "lib/full_odds/db/migrations")
    puts "Database migrated successfully!"
  end

  desc "Create migration"
  task :new_migration, [:name] do |t, args|
    filename = create_migration_or_seed('migration', args)
    File.open(filename, 'w') do |f|
      f.write <<~RUBY
        Sequel.migration do
          change do
            # Add migration logic here
          end
        end
      RUBY
    end
    puts "Created migration: #{filename}"
  end

  desc "Apply seeds"
  task :seed do
    Sequel.extension :seed
    db = FO::DB.connection
    Sequel::Seeder.apply(db, "lib/full_odds/db/seeds")
    puts "Seeds run successfully!"
  end

  desc "Create seed"
  task :new_seed, [:name] do |t, args|
    filename = create_migration_or_seed('seed', args)
    File.open(filename, 'w') do |f|
      f.write <<~RUBY
        Sequel.seed do
          def run
            # Add seed logic here
          end
        end
      RUBY
    end
    puts "Created seed: #{filename}"
  end
end
