DB.connect! opens a single Sequel connection from DATABASE_URL; DB.migrate! runs Sequel migrations from db/migrations/. The first migration creates the invoices table: uuid PK, unique invoice number, client + currency fields, JSONB for line items, GEL conversion rate captured at issue time, paid_at for the status toggle, pdf_key for the MinIO object.
22 lines
460 B
Ruby
22 lines
460 B
Ruby
require 'sequel'
|
|
|
|
module DB
|
|
module_function
|
|
|
|
def connect!
|
|
@connection ||= Sequel.connect(
|
|
ENV.fetch('DATABASE_URL'),
|
|
max_connections: 5,
|
|
logger: ($env == 'development' ? $logger : nil)
|
|
)
|
|
end
|
|
|
|
def connection
|
|
@connection or raise 'DB not connected — call DB.connect! first'
|
|
end
|
|
|
|
def migrate!
|
|
Sequel.extension :migration
|
|
Sequel::Migrator.run(connection, File.join($root, 'db', 'migrations'))
|
|
end
|
|
end
|