Sha256: 890a39478bf21e74d46b44e353351b40e09b01579a5795e64a842c8cdf4bef61

Contents?: true

Size: 1.4 KB

Versions: 14

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

require 'sequel'

module Sequel
  def self.json_parser_error_class
    ActiveSupport::JSON.parse_error
  end

  def self.parse_json(json)
    ActiveSupport::JSON.decode(json).deep_symbolize_keys
  end

  class Database
    def log_connection_yield(sql, conn, args=nil, &block)
      return unless @loggers.first
      if conn && log_connection_info
        @loggers.first.tagged(conn.__id__) do
          log_semantic(sql, args, &block)
        end
      else
        log_semantic(sql, args, &block)
      end
    end

    def log_semantic(sql, args)
      return unless @loggers.first
      message = "#{sql}#{"; #{args.inspect}" if args}"
      if log_warn_duration
        @loggers.first.measure_warn(message, min_duration: log_warn_duration) do
          yield
        end
      else
        @loggers.first.measure_debug(message) do
          yield
        end
      end
    end
  end
end

module PUNK
  def self.migration(&block)
    Sequel::MigrationDSL.create(&block)
  end
end

PUNK::Interface.register(:db) do
  PUNK.profile_debug('db_connect', url: PUNK.get.db.url) do
    pg = Sequel.connect(PUNK.get.db.url, logger: SemanticLogger['PUNK::SQL'])
    pg.extension :pg_enum, :pg_range, :pg_array, :pg_json, :pg_row, :pg_timestamptz, :pg_inet
    Sequel.extension :pg_array_ops, :pg_range_ops, :pg_json_ops, :pg_row_ops, :named_timezones, :thread_local_timezones
    pg
  end
end

PUNK.inject :db

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
punk-0.3.6 lib/punk/startup/database.rb
punk-0.3.5 lib/punk/startup/database.rb
punk-0.3.4 lib/punk/startup/database.rb
punk-0.3.3 lib/punk/startup/database.rb
punk-0.3.2 lib/punk/startup/database.rb
punk-0.3.1 lib/punk/startup/database.rb
punk-0.2.0 lib/punk/startup/database.rb
punk-0.1.4 lib/punk/startup/database.rb
punk-0.1.3 lib/punk/startup/database.rb
punk-0.1.2 lib/punk/startup/database.rb
punk-0.1.0 lib/punk/startup/database.rb
punk-0.0.3 lib/punk/startup/database.rb
punk-0.0.2 lib/punk/startup/database.rb
punk-0.0.1 lib/punk/startup/database.rb