summaryrefslogtreecommitdiffhomepage
path: root/rails-backend/app/models/game.rb
diff options
context:
space:
mode:
Diffstat (limited to 'rails-backend/app/models/game.rb')
-rw-r--r--rails-backend/app/models/game.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/rails-backend/app/models/game.rb b/rails-backend/app/models/game.rb
new file mode 100644
index 0000000..e30dfae
--- /dev/null
+++ b/rails-backend/app/models/game.rb
@@ -0,0 +1,39 @@
+require "zip"
+
+class Game < ApplicationRecord
+ enum status: { draft: 0, published: 1 }
+ #enum status: {
+ # draft: 0,
+ # published: 1
+ #}
+ belongs_to :user
+ has_many_attached :game_files
+ has_one_attached :zip
+ has_one_attached :card_img
+ 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