# frozen_string_literal: true require 'logger' require 'sequel' require 'sqlite3' require 'sinatra/base' require 'sinatra/json' require 'rack/protection' # Load the Sequel timestamps plugin Sequel::Model.plugin(:timestamps) # Initialize Sequel gem for database actions DB = Sequel.connect(adapter: $conf.get('database.adapter'), database: $conf.get('database.database')) # Load models Dir.glob('./app/models/*.rb').sort().each { |f| require f } # Base Sinatra app class StageManager < Sinatra::Base @@my_app = {} def self.new(*) self < StageManager ? super : Rack::URLMap.new(@@my_app) end def self.map(url) @@my_app[url] = self end # Enable and configure sessions enable :sessions # Enable rack protection middleware use Rack::Protection # Set up static file serving enable :static set :public_folder, File.join(__dir__, '/public') # Set up our view engine set :views, File.join(settings.root, '/views') # Initialize logging logger = Logger.new($stdout) logger.level = Logger::INFO # Load helper functions require_relative 'app/helpers' helpers Helpers ## Map controllers # Top-level routes controller class IndexController < StageManager map '/' end # Channel routes controller class ChannelController < StageManager map '/channel' end # Video routes controller class VideoController < StageManager map '/video' end # API v1 controller class ApiV1Controller < StageManager map '/api/v1' end end # Load controllers Dir.glob('./app/routes/*.rb').sort().each { |f| require f }