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
|