From ef1813f16e98d4662d176380ae089c4899bebd08 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Fri, 3 Mar 2023 23:22:17 -0500 Subject: [PATCH] Added directories to channels and videos --- data/defaults.yaml | 3 +++ db/migrations/0003_add_directory_paths.rb | 13 +++++++++++++ lib/routes/channel.rb | 8 ++++++-- lib/routes/video.rb | 12 +++++++++++- server.rb | 4 ++-- views/channel/create.erb | 7 +++++++ views/channel/view.erb | 3 +++ views/video/view.erb | 3 +++ 8 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 db/migrations/0003_add_directory_paths.rb diff --git a/data/defaults.yaml b/data/defaults.yaml index 3a1bb3f..8a1d608 100644 --- a/data/defaults.yaml +++ b/data/defaults.yaml @@ -1,3 +1,6 @@ +stgm: + base_directory: '/srv/videos' + database: adapter: 'sqlite' database: 'data/stgm.db' diff --git a/db/migrations/0003_add_directory_paths.rb b/db/migrations/0003_add_directory_paths.rb new file mode 100644 index 0000000..8d755e2 --- /dev/null +++ b/db/migrations/0003_add_directory_paths.rb @@ -0,0 +1,13 @@ +Sequel.migration do + + up do + add_column(:channels, :directory_path, String) + add_column(:videos, :directory_path, String) + end + + down do + drop_column(:channels, :directory_path) + drop_column(:videos, :directory_path) + end + +end diff --git a/lib/routes/channel.rb b/lib/routes/channel.rb index db4d4fd..c68e49d 100644 --- a/lib/routes/channel.rb +++ b/lib/routes/channel.rb @@ -13,15 +13,19 @@ namespace '/channel' do get '/create' do erb :'channel/create', :locals => { - :title => 'Create new channel' + :title => 'Create new channel', + :base_directory => $conf.get('stgm.base_directory') } end post '/create' do channel = Channel.create( name: params[:channel_name], + directory_path: params[:channel_dir], description: params[:channel_description] ) - + + Dir.mkdir(channel.directory_path) + redirect "/channel/#{channel.id}" end diff --git a/lib/routes/video.rb b/lib/routes/video.rb index 3b0de6d..fb6b641 100644 --- a/lib/routes/video.rb +++ b/lib/routes/video.rb @@ -19,13 +19,23 @@ namespace '/video' do } end post '/create' do + channel = Channel.where(id: params[:video_channel]).first() + video_serial = params[:video_serial].to_s.rjust(4, '0') + video_path = File.join( + channel.directory_path, + "##{video_serial} - #{params[:video_name]}" + ) + video = Video.create( serial: params[:video_serial], name: params[:video_name], channel_id: params[:video_channel], + directory_path: video_path, description: params[:video_description] ) - + + Dir.mkdir(video_path) + redirect "/video/#{video.id}" end diff --git a/server.rb b/server.rb index 89c4e32..495234f 100644 --- a/server.rb +++ b/server.rb @@ -11,7 +11,7 @@ set :public_folder, __dir__ + '/public' set :views, settings.root + '/views' # Load configuration file -conf = Config.new(File.join(__dir__, 'data/defaults.yaml')) +$conf = Config.new(File.join(__dir__, 'data/defaults.yaml')) # Initialize logging logger = Logger.new(STDOUT) @@ -20,7 +20,7 @@ logger.level = Logger::INFO # 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')) +DB = Sequel.connect(adapter: $conf.get('database.adapter'), database: $conf.get('database.database')) # Load models require_relative 'lib/models/channel.rb' require_relative 'lib/models/video.rb' diff --git a/views/channel/create.erb b/views/channel/create.erb index 7289dd6..74970ee 100644 --- a/views/channel/create.erb +++ b/views/channel/create.erb @@ -14,6 +14,13 @@ +
+
+ + +
+
+
diff --git a/views/channel/view.erb b/views/channel/view.erb index 1ea2886..f6c6c05 100644 --- a/views/channel/view.erb +++ b/views/channel/view.erb @@ -14,6 +14,9 @@ Edit Delete
+
+

<%= channel.directory_path %>

+

Open projects: <%= channel.openProjects() %>

diff --git a/views/video/view.erb b/views/video/view.erb index 4d59864..84eb781 100644 --- a/views/video/view.erb +++ b/views/video/view.erb @@ -20,5 +20,8 @@

Serial: <%= serialize(video.serial) %>

+
+

<%= video.directory_path %>

+