46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "db/mongo/models/model_with_provider"
 | |
| require "db/validators/name"
 | |
| 
 | |
| module Devops
 | |
|   module Model
 | |
|     class StackTemplateBase
 | |
| 
 | |
|       include ::Mongoid::Document
 | |
|       include ::Mongoid::Timestamps::CreatedInt
 | |
|       include ::ActiveModel::Validations
 | |
| 
 | |
|       store_in collection: "stack_templates"
 | |
| 
 | |
|       include ModelWithProviderAccount
 | |
| 
 | |
|       field :_id, as: :id, overwrite: true, type: String
 | |
|       field :owner, type: String
 | |
|       field :template_body, type: String
 | |
|       # should be a hash like {'param_name' => {type: 'String', description: 'Description'}}
 | |
|       field :available_parameters, type: Hash, default: {}
 | |
| 
 | |
|       validates :owner, :template_body, presence: true
 | |
|       validates :id, uniqueness: true, on: :create
 | |
|       validates :id, name: true, presence: true
 | |
| 
 | |
|       def to_hash
 | |
|         attributes.tap { |hash| hash['id'] = hash.delete('_id') }
 | |
|       end
 | |
| 
 | |
|       def parse_parameters
 | |
|         {}
 | |
|       end
 | |
| 
 | |
|       # attrs should include:
 | |
|       # - id (String)
 | |
|       # - provider (String)
 | |
|       # - template_body (String)
 | |
|       def self.create(attrs)
 | |
|         template = new(attrs)
 | |
|         template.available_parameters = template.parse_parameters
 | |
|         template
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | 
