#!/usr/bin/env ruby

raise "Please supply database path" unless ARGV[0]

$LOAD_PATH.unshift "./lib"
$LOAD_PATH.unshift "./spec"
$LOAD_PATH.unshift "./tasks"
ENV["RACK_ENV"] = "development"
require "sequel"
require "logger"
DATABASE_CREDENTIALS = {logger: Logger.new($stdout), adapter: "sqlite", database: ARGV[0], :encoding => "utf8"}
#DATABASE_CREDENTIALS = {adapter: "postgres", database: "pact_broker", username: 'pact_broker', password: 'pact_broker', :encoding => 'utf8'}

connection = Sequel.connect(DATABASE_CREDENTIALS)
connection.timezone = :utc
require "pact_broker/db"
PactBroker::DB.connection = connection
require "pact_broker"
require "support/test_data_builder"

require "database/table_dependency_calculator"
PactBroker::Database::TableDependencyCalculator.call(connection).each do | table_name |
  connection[table_name].delete
end

PactBroker.configuration.order_versions_by_date = true

TestDataBuilder.new
  .create_consumer("zoo-app")
  .create_provider("animal-service")
  .create_consumer_version("96327295487f71f8af70a72da820d85333ab5d3e")
  .create_consumer_version_tag("master")
  .create_consumer_version_tag("prod")
  .create_pact(created_at: DateTime.now - 4)
  .create_verification(provider_version: "a519731ba244b7c0a5de7b1c862d5949e7e5db33", success: true, tag_names: ["master", "prod"], execution_date: DateTime.now - 3)
  .create_consumer_version("955b9ea2b9eb0c8515ed94b919b0bb3be06db5b5")
  .create_consumer_version_tag("master")
  .create_pact(created_at: DateTime.now - 2)
  .create_verification(provider_version: "82b59ef5f8aef1b1abfb47c3e0004e9697d03b7e", success: false, number: 2, tag_names: ["master"], execution_date: DateTime.now - 1)
  .create_consumer_version("07247012de27131ff879c3109023942b272d2716")
  .create_consumer_version_tag("master")
  .create_pact(created_at: DateTime.now - 0.5)

#   # .create_webhook(method: 'GET', url: 'https://localhost:9393?url=${pactbroker.pactUrl}', body: '${pactbroker.pactUrl}')
# TestDataBuilder.new
#   .create_consumer("Foo")
#   .create_label("microservice")
#   .create_provider("Bar")
#   .create_label("microservice")
#   .create_webhook(method: 'GET', url: 'https://self-signed.badssl.com')
#   .create_consumer_version("1.2.100")
#   .create_environment("production")
#   .publish_pact
#   .create_verification(provider_version: "1.4.234", success: true, execution_date: DateTime.now - 15)
#   .revise_pact
#   .create_consumer_version("1.2.101")
#   .create_consumer_version_tag('prod')
#   .publish_pact
#   .create_verification(provider_version: "9.9.10", success: false, execution_date: DateTime.now - 15)
#   .create_consumer_version("1.2.102")
#   .publish_pact(created_at: (Date.today - 7).to_datetime)
#   .create_verification(provider_version: "9.9.9", success: true, execution_date: DateTime.now - 14)
#   .create_provider("Animals")
#   .create_webhook(method: 'GET', url: 'http://localhost:9393/')
#   .publish_pact(created_at: (Time.now - 140).to_datetime)
#   .create_verification(provider_version: "2.0.366", execution_date: Date.today - 2) #changed
#   .create_provider("Wiffles")
#   .publish_pact
#   .create_verification(provider_version: "3.6.100", success: false, execution_date: Date.today - 7)
#   .create_provider("Hello World App")
#   .create_consumer_version("1.2.107")
#   .publish_pact(created_at: (Date.today - 1).to_datetime)
#   .create_consumer("The Android App")
#   .create_provider("The back end")
#   .create_webhook(method: 'GET', url: 'http://localhost:9393/')
#   .create_consumer_version("1.2.106")
#   .create_consumer_version_tag("production")
#   .create_consumer_version_tag("feat-x")
#   .publish_pact
#   .create_consumer("Some other app")
#   .create_provider("A service")
#   .create_webhook(method: 'GET', url: 'http://localhost:9393/')
#   .create_triggered_webhook(status: 'success')
#   .create_webhook_execution
#   .create_webhook(method: 'POST', url: 'http://foo:9393/')
#   .create_triggered_webhook(status: 'failure')
#   .create_webhook_execution
#   .create_consumer_version("1.2.106")
#   .publish_pact(created_at: (Date.today - 26).to_datetime)
#   .create_verification(provider_version: "4.8.152", execution_date: DateTime.now)

# # TestDataBuilder.new
# #   .create_pact_with_hierarchy("A", "1", "B")
# #   .create_consumer_version_tag("master")
# #   .create_consumer_version_tag("prod")
# #   .create_verification(provider_version: "1")
# #   .create_consumer_version("2")
# #   .create_consumer_version_tag("master")
# #   .create_pact
# #   .create_verification(provider_version: "2")

# # TestDataBuilder.new
# #   .create_pact_with_hierarchy("Foo", "1", "Bar")
# #   .create_webhook(method: 'GET', url: 'http://localhost:9393', events: [{ name: 'provider_verification_published' }, {name: ''}])

