47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require "db/mongo/models/model_with_provider" | ||
|  | require 'mongoid' | ||
|  | 
 | ||
|  | module Devops | ||
|  |   module Model | ||
|  |     class ProviderAccount | ||
|  | 
 | ||
|  |       include ::Mongoid::Document | ||
|  |       include ::Mongoid::Timestamps::CreatedInt | ||
|  |       include ::ActiveModel::Validations | ||
|  | 
 | ||
|  |       include ModelWithProvider | ||
|  | 
 | ||
|  |       store_in collection: 'provider_accounts' | ||
|  | 
 | ||
|  |       field :_id, as: :account_name, overwrite: true, type: String | ||
|  |       field :description, type: String | ||
|  |       field :ssh_key, type: String | ||
|  | 
 | ||
|  | #      validates_presence_of :account_name, message: "'account_name' is undefined" | ||
|  |       validates_length_of :account_name, maximum: 100
 | ||
|  |       validates_format_of :account_name, with: /\A[a-z_][a-z0-9_-]{0,99}\z/, message: "invalid account_name" | ||
|  |       validates_uniqueness_of :account_name, on: :create | ||
|  | 
 | ||
|  |       validates_length_of :description, maximum: 500
 | ||
|  | 
 | ||
|  | #      validates_presence_of :ssh_key, message: "'ssh_key' is undefined" | ||
|  |       validates_length_of :ssh_key, maximum: 100
 | ||
|  |       validates_format_of :ssh_key, with: /\A[a-z_][a-z0-9_-]{0,99}\z/, message: "invalid ssh_key" | ||
|  | 
 | ||
|  |       def initialize hash | ||
|  |         raise InvalidRecord.new("Parameter 'account_name' is not a string") unless hash["account_name"].is_a?(String) | ||
|  |         raise InvalidRecord.new("Parameter 'ssh_key' is not a string") unless hash["ssh_key"].is_a?(String) | ||
|  |         super(hash) | ||
|  |       end | ||
|  | 
 | ||
|  |       def to_hash | ||
|  |         hash = self.attributes.clone | ||
|  |         hash.delete("_type") | ||
|  |         hash["account_name"] = hash.delete("_id") | ||
|  |         hash | ||
|  |       end | ||
|  | 
 | ||
|  |     end | ||
|  |   end | ||
|  | end |