Files
bit/app/lib/database.cr
T
2025-03-17 09:40:42 +01:00

37 lines
830 B
Crystal

require "sqlite3"
require "crecto"
require "micrate"
module App::Lib
class Database
extend Crecto::Repo
Query = Crecto::Repo::Query
config do |conf|
base_url = ENV["DATABASE_URL"]
separator = base_url.includes?("?") ? "&" : "?"
db_url = base_url + separator +
"pool_size=20" +
"&max_idle_pool_size=10" + # Keep connections ready
"&journal_mode=WAL" + # Write-Ahead Logging for concurrent reads
"&synchronous=NORMAL" + # Better performance with reasonable safety
"&foreign_keys=true"
conf.uri = db_url
end
if ENV["ENV"] == "development"
Crecto::DbLogger.set_handler(STDOUT)
end
def self.run_migrations
Micrate::DB.connection_url = ENV["DATABASE_URL"]
Micrate::Cli.run_up
end
run_migrations
end
end