require 'data_mapper'

# set all String properties to have a default length of 255
DataMapper::Property::String.length(255)

###                            ###
# setup the database connection  #
###                            ###

# BugZilla specific tables
class Product
  include DataMapper::Resource
  property :name, String, :required => true, :key => true

  has n, :bugreports
  has n, :bugtrends
end

class Bugreport
  include DataMapper::Resource
  property :bug_id, Integer, :required => true, :key => true
  property :summary, String
  property :status, String, :required => true
  property :is_open, Boolean, :required => true
  property :component, String
  property :severity, String
  property :priority, String
  property :whiteboard, String
  property :assigned_to, String
  property :creation_time, DateTime
  property :last_change_time, DateTime
  property :url, String

  belongs_to :product
end

class Bugtrend
  include DataMapper::Resource
  property :id, Serial, :key => true
  property :time, String
  property :open, Integer
  property :fixed, Integer

  belongs_to :product
end

class L3Trend
  include DataMapper::Resource
  property :id, Serial, :key => true
  property :time, String
  property :open, Integer
end

# GitHub specific tables
class Organization
  include DataMapper::Resource
  property :oname, String, :required => true, :key => true
end

class Repository
  include DataMapper::Resource
  property :rname, String, :required => true, :key => true

  belongs_to :organization, :required => false
end

class Pullrequest
  include DataMapper::Resource
  property :id, Serial
  property :pr_number, Integer, :required => true
  property :title, String
  property :state, String
  property :url, String
  property :created_at, DateTime

  belongs_to :repository
end

class Pulltrend
  include DataMapper::Resource
  property :id, Serial, :key => true
  property :time, String
  property :open, Integer

  belongs_to :repository
end
DataMapper.finalize

DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{File.join(File.expand_path(File.dirname(__FILE__)),'nailed.db')}")