44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "db/exceptions/invalid_record"
 | |
| require "db/mongo/models/mongo_model"
 | |
| 
 | |
| class Image < MongoModel
 | |
| 
 | |
|   attr_accessor :id, :provider, :remote_user, :name, :bootstrap_template
 | |
|   types :id => {:type => String, :empty => false},
 | |
|         :provider => {:type => String, :empty => false},
 | |
|         :remote_user => {:type => String, :empty => false},
 | |
|         :name => {:type => String, :empty => true},
 | |
|         :bootstrap_template => {:type => String, :empty => false, :nil => true}
 | |
|   set_validators ::Validators::Image::ImageInFilter,
 | |
|     ::Validators::Image::BootstrapTemplate
 | |
| 
 | |
|   def initialize p={}
 | |
|     self.id = p["id"]
 | |
|     self.provider = p["provider"]
 | |
|     self.remote_user = p["remote_user"]
 | |
|     self.name = p["name"] || ""
 | |
|     self.bootstrap_template = p["bootstrap_template"]
 | |
|   end
 | |
| 
 | |
|   def self.build_from_bson args
 | |
|     image = Image.new(args)
 | |
|     image.id = args["_id"]
 | |
|     image
 | |
|   end
 | |
| 
 | |
|   def to_hash_without_id
 | |
|     o = {
 | |
|       "provider" => self.provider,
 | |
|       "name" => self.name,
 | |
|       "remote_user" => self.remote_user
 | |
|     }
 | |
|     o["bootstrap_template"] = self.bootstrap_template
 | |
|     o
 | |
|   end
 | |
| 
 | |
|   def self.create_from_json! json
 | |
|     Image.new( JSON.parse(json) )
 | |
|   end
 | |
| 
 | |
| end
 | 
