Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@ tmp
_yardoc
doc/
.DS_Store

# SQLite database
/storage/*
3 changes: 2 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
source 'https://rubygems.org/'
ruby file: '.ruby-version'

gem 'sequel'
gem 'sequel', github: 'jeremyevans/sequel'
gem 'pg'
gem 'sequel_pg', require: 'sequel'
gem 'sinatra'
Expand All @@ -26,6 +26,7 @@ gem 'rake'
gem 'rubocop', '~> 1.64.1', require: false
gem 'dyno_metadata'
gem 'localhost'
gem 'sqlite3'

group :test do
gem 'climate_control'
Expand Down
18 changes: 15 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
GIT
remote: https://github.com/jeremyevans/sequel.git
revision: 7b748b5c89b1448fb6e1c42037b741421fa32101
specs:
sequel (5.81.0)
bigdecimal

GEM
remote: https://rubygems.org/
specs:
Expand Down Expand Up @@ -43,6 +50,7 @@ GEM
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2020.1104)
mini_portile2 (2.8.7)
minitest (5.23.1)
multi_json (1.15.0)
mustermann (3.0.0)
Expand Down Expand Up @@ -112,8 +120,6 @@ GEM
selma (0.2.2-x86_64-linux)
sentry-ruby (5.16.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
sequel (5.81.0)
bigdecimal
sequel_pg (1.17.1)
pg (>= 0.18.0, != 1.2.0)
sequel (>= 4.38.0)
Expand All @@ -130,6 +136,11 @@ GEM
sinatra (= 4.0.0)
tilt (~> 2.0)
spinels-rack-ssl-enforcer (0.3.0)
sqlite3 (2.0.2)
mini_portile2 (~> 2.8.0)
sqlite3 (2.0.2-aarch64-linux-gnu)
sqlite3 (2.0.2-arm64-darwin)
sqlite3 (2.0.2-x86_64-linux-gnu)
strscan (3.1.0)
temple (0.10.3)
thor (1.3.0)
Expand Down Expand Up @@ -175,11 +186,12 @@ DEPENDENCIES
rest-client
rubocop (~> 1.64.1)
sentry-ruby
sequel
sequel!
sequel_pg
sinatra
sinatra-contrib
spinels-rack-ssl-enforcer
sqlite3
wait_for_it
warning
webmock
Expand Down
8 changes: 5 additions & 3 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,16 @@ namespace(:db) do
desc "Run migrations"
task :migrate, [:version] do |t, args|
require 'sequel'
require_relative 'config/database' # creates DB

Sequel.extension(:migration)
db = Sequel.connect(ENV.fetch('DATABASE_URL', 'postgres://localhost/wikimum'))

if args[:version]
puts "Migrating to version #{args[:version]}"
Sequel::Migrator.run(db, 'migrations', target: args[:version].to_i)
Sequel::Migrator.run(DB, 'migrations', target: args[:version].to_i)
else
puts "Migrating to latest"
Sequel::Migrator.run(db, 'migrations')
Sequel::Migrator.run(DB, 'migrations')
end
end
end
8 changes: 1 addition & 7 deletions config/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,7 @@
require 'sequel'

require_relative '../lib/app'

DB = Sequel.connect(ENV.fetch('DATABASE_URL', 'postgres://localhost/wikimum'))

# https://github.com/Starkast/wikimum/issues/412
# https://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/connection_validator_rb.html
DB.extension(:connection_validator)
DB.pool.connection_validation_timeout = 60 * 5
require_relative 'database'

if App.development?
require 'logger'
Expand Down
9 changes: 9 additions & 0 deletions config/database.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# frozen_string_literal: true

database_url = ENV.fetch("DATABASE_URL", "sqlite://storage/wiki.db")
DB = Sequel.connect(database_url)

# https://github.com/Starkast/wikimum/issues/412
# https://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/connection_validator_rb.html
DB.extension(:connection_validator)
DB.pool.connection_validation_timeout = 60 * 5
Comment on lines +6 to +9
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can't make any sense when using SQLite? 🤔

14 changes: 13 additions & 1 deletion migrations/11_page_search.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
# frozen_string_literal: true

Sequel.migration do
change do
up do
# SQLite is not using indexes for full text search
# https://sqlite.org/fts5.html
next if database_type == :sqlite

alter_table(:pages) do
add_full_text_index %i(title content description)
end
end

down do
next if database_type == :sqlite

alter_table(:pages) do
drop_index %i(title content description)
end
end
end
Binary file added vendor/cache/mini_portile2-2.8.7.gem
Binary file not shown.
Binary file removed vendor/cache/sequel-5.81.0.gem
Binary file not shown.
Binary file added vendor/cache/sqlite3-2.0.2-aarch64-linux-gnu.gem
Binary file not shown.
Binary file added vendor/cache/sqlite3-2.0.2-arm64-darwin.gem
Binary file not shown.
Binary file added vendor/cache/sqlite3-2.0.2-x86_64-linux-gnu.gem
Binary file not shown.
Binary file added vendor/cache/sqlite3-2.0.2.gem
Binary file not shown.