Sha256: 4579130abfd821b15c7cf11a4138abf150a37feb7b62d74dba228bf58fa84da3

Contents?: true

Size: 1.44 KB

Versions: 22

Compression:

Stored size: 1.44 KB

Contents

# :nocov:
# rubocop:todo Metrics/BlockLength
Hanami.app.register_provider :persistence, namespace: true do
  prepare do
    require "rom-changeset"
    require "rom/core"
    require "rom/sql"

    Sequel::Database.extension :constant_sql_override, :pg_enum
    Sequel.database_timezone = :utc
    Sequel.application_timezone = :local

    configuration = ROM::Configuration.new :sql, target["settings"].database_url

    configuration.plugin :sql, relations: :instrumentation do |plugin_config|
      plugin_config.notifications = target["notifications"]
    end

    configuration.plugin :sql, relations: :auto_restrictions

    database = configuration.gateways[:default].connection
    database.set_constant_sql Sequel::CURRENT_TIMESTAMP, "(CURRENT_TIMESTAMP AT TIME ZONE 'UTC')"

    register "config", configuration
    register "db", database

    Sequel::Migrator.is_current? database, Hanami.app.root.join("db/migrate")
  rescue NoMethodError, Sequel::Migrator::Error => error
    message = error.message
    Hanami.logger.error message unless error.is_a?(NoMethodError) && message.include?("migration")
  end

  start do
    configuration = target["persistence.config"]

    configuration.auto_registration(
      target.root.join("lib/<%= configuration.project_path %>/persistence"),
      namespace: "<%= configuration.project_namespaced_class %>::Persistence"
    )

    register "rom", ROM.container(configuration)
  end
end
# rubocop:enable Metrics/BlockLength

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
hanamismith-0.38.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.37.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.34.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.33.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.32.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.31.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.30.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.29.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.28.1 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.28.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.27.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.26.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.25.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.24.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.23.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.22.1 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.22.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.21.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.20.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb
hanamismith-0.19.0 lib/hanamismith/templates/%project_name%/config/providers/persistence.rb.erb