Sha256: 5300b0f0b5b5f20be9823ca4737cadeb4b46ec9639f90ada2ed0b1eed96fa9da

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

Sequel.database_timezone = :utc
Sequel.application_timezone = :utc
module GithubStats
  # Encapsulates database bits and bobs and tiddles.
  class Database
    attr_accessor :options, :adapter
    def initialize(options)
      self.options = options
    end

    def adapter
      @adapter ||= Sequel.connect(database_url)
    end

    def issues
      adapter[:issues]
    end

    def setup
      return if setup?
      create_issues
      create_events
    end

    private def setup?
      File.exist?(URI.parse(database_url).path)
    end

    private def create_issues
      adapter.create_table :issues do
        primary_key :id
        String :url
        String :search_string
        Integer :github_id
        DateTime :closed_at
        DateTime :created_at
        DateTime :started_at
      end
    end

    private def create_events
      adapter.create_table :events do
        primary_key :id
        foreign_key :issue_id, :issues, on_delete: :cascade
        DateTime :created_at
        String :type
      end
    end

    private def database_url
      options[:database_url]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
github-stats-0.2.0 lib/github_stats/database.rb
github-stats-0.1.0 lib/github_stats/database.rb