56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "json"
 | |
| 
 | |
| module Devops
 | |
|   module Model
 | |
|     class Key
 | |
| 
 | |
|       include ::Mongoid::Document
 | |
|       include ::Mongoid::Timestamps::CreatedInt
 | |
|       include ::ActiveModel::Validations
 | |
| 
 | |
|       store_in collection: "keys"
 | |
| 
 | |
|       field :_id, as: :'id', overwrite: true, type: String
 | |
|       field :path, type: String
 | |
| 
 | |
| #      validates_presence_of :id, message: "'id' is undefined"
 | |
|       validates_length_of :id, maximum: 100
 | |
|       validates_format_of :id, with: /\A[a-z_][a-z0-9_-]{0,99}\z/, message: "invalid id"
 | |
| 
 | |
|       before_destroy :delete_file
 | |
| 
 | |
|       def initialize hash
 | |
|         raise InvalidRecord.new("Parameter 'id' is not a string") unless hash["id"].is_a?(String)
 | |
|         super(hash)
 | |
|       end
 | |
| 
 | |
|       def to_hash
 | |
|         hash = self.attributes.clone
 | |
|         hash["id"] = hash.delete("_id")
 | |
|         hash
 | |
|       end
 | |
| 
 | |
|       def filename
 | |
|         File.basename(self.path)
 | |
|       end
 | |
| 
 | |
|       def to_list_hash
 | |
|         {
 | |
|           "id" => self.id,
 | |
|           "filename" => self.filename,
 | |
|           "created_at" => self.created_at
 | |
|         }
 | |
|       end
 | |
| 
 | |
|       private
 | |
|       def delete_file
 | |
|         FileUtils.rm(self.path)
 | |
|         DevopsLogger.logger.info("File '#{self.path}' has been removed")
 | |
|       rescue
 | |
|         DevopsLogger.logger.error "Missing key file for #{key_id} - #{k.filename}"
 | |
|       end
 | |
| 
 | |
|     end
 | |
|   end
 | |
| end
 | 
