diff options
| author | realtradam <[email protected]> | 2024-06-17 11:07:15 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2024-06-17 11:07:15 -0400 |
| commit | 23a972d8dec43dec1dc472a90d4749223e4aac00 (patch) | |
| tree | 3ec62df7930e7095fd460eb4b4593334763575b5 /app | |
| parent | 0855fce7d1960ff7aa1402d60504ca38feb0ff7e (diff) | |
| download | gameHolster-23a972d8dec43dec1dc472a90d4749223e4aac00.tar.gz gameHolster-23a972d8dec43dec1dc472a90d4749223e4aac00.zip | |
update db initialization and bring back minor changes
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/api/v1/games_controller.rb | 20 | ||||
| -rw-r--r-- | app/models/game.rb | 25 |
2 files changed, 26 insertions, 19 deletions
diff --git a/app/controllers/api/v1/games_controller.rb b/app/controllers/api/v1/games_controller.rb index 6a412c8..4346244 100644 --- a/app/controllers/api/v1/games_controller.rb +++ b/app/controllers/api/v1/games_controller.rb @@ -25,25 +25,7 @@ class Api::V1::GamesController < ApplicationController end end - Zip::File.open(params[:game][:zip]) do |zipfile| - - zipfile.each do |entry| - if entry.file? - path_name = entry.name.rpartition('/') - name_extension = path_name.last.rpartition('.') - - Tempfile.open([name_extension.first, name_extension[1] + name_extension.last]) do |temp_file| - entry.extract(temp_file.path) { true } - @game.game_files.attach(io: File.open(temp_file.path), filename: path_name.last) - @game.game_files.last.blob.filepath = path_name.first.delete_suffix('/').delete_prefix('/') - - # saving the game wont have the blob saved so we need to do it manually - @game.game_files.last.blob.save - end - - end - end - end + @game.save_zip(params[:game][:zip]) if @game.save render json: @game, status: :created diff --git a/app/models/game.rb b/app/models/game.rb index 1eb75ff..e30dfae 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -1,3 +1,5 @@ +require "zip" + class Game < ApplicationRecord enum status: { draft: 0, published: 1 } #enum status: { @@ -11,4 +13,27 @@ class Game < ApplicationRecord has_one_attached :char_img has_one_attached :title_img has_and_belongs_to_many :tags + + def save_zip(zip) + Zip::File.open(zip) do |zipfile| + + zipfile.each do |entry| + if entry.file? + path_name = entry.name.rpartition('/') + name_extension = path_name.last.rpartition('.') + + Tempfile.open([name_extension.first, name_extension[1] + name_extension.last]) do |temp_file| + entry.extract(temp_file.path) { true } + self.game_files.attach(io: File.open(temp_file.path), filename: path_name.last) + self.game_files.last.blob.filepath = path_name.first.delete_suffix('/').delete_prefix('/') + + # saving the game wont have the blob saved so we need to do it manually + self.game_files.last.blob.save + end + + end + end + end + + end end |
