From f777ea11b399abfdde72558709cf822329b23def Mon Sep 17 00:00:00 2001 From: David Gwilliam Date: Thu, 12 Sep 2024 17:52:04 -0700 Subject: [PATCH] implement persistence --- Gemfile | 4 ++++ config/providers/persistence.rb | 19 +++++++++++++++++++ config/settings.rb | 1 + 3 files changed, 24 insertions(+) create mode 100644 config/providers/persistence.rb diff --git a/Gemfile b/Gemfile index e86fde2..9cf42a3 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,10 @@ gem "dry-types", "~> 1.0", ">= 1.6.1" gem "puma" gem "rake" +gem "rom", "~> 5.3" +gem "rom-sql", "~> 3.6" +gem "sqlite3" + group :development do gem "hanami-webconsole", "~> 2.1" gem "guard-puma" diff --git a/config/providers/persistence.rb b/config/providers/persistence.rb new file mode 100644 index 0000000..14309cd --- /dev/null +++ b/config/providers/persistence.rb @@ -0,0 +1,19 @@ +Hanami.app.register_provider :persistence, namespace: true do + prepare do + require 'rom' + + config = ROM::Configuration.new(:sql, target["settings"].database_url) + + register "config", config + register "db", config.gateways[:default].connection + end + + start do + config = target["persistence.config"] + + config.auto_registration(target.root.join('lib/euchre_camp/persistence'), + namespace: "EuchreCamp::Persistence") + + register "rom", ROM.container(config) + end +end \ No newline at end of file diff --git a/config/settings.rb b/config/settings.rb index e510191..957c42f 100644 --- a/config/settings.rb +++ b/config/settings.rb @@ -5,5 +5,6 @@ module EuchreCamp # Define your app settings here, for example: # # setting :my_flag, default: false, constructor: Types::Params::Bool + setting :database_url, constructor: Types::String end end