Sha256: f404244621fc4b9a77bd2e4decfa1c6af7e7dc0b4a351e469700b490af51c3ab

Contents?: true

Size: 1.85 KB

Versions: 24

Compression:

Stored size: 1.85 KB

Contents

module Rhosync  
  class InvalidSourceNameError < RuntimeError; end
  
  class Client < Model
    field :device_type,:string
    field :device_pin,:string
    field :device_port,:string
    
    field :user_id,:string
    field :app_id,:string
    attr_accessor :source_name
    validates_presence_of :app_id, :user_id
    
    include Document
    include LockOps
    
    def self.create(fields,params={})
      Rhosync.license.check_and_use_seat
      fields[:id] = get_random_uuid
      res = super(fields,params)
      user = User.load(fields[:user_id])
      user.clients << res.id
      res
    end
    
    def self.load(id,params)
      validate_attributes(params)
      super(id,params)
    end
    
    def app
      @app ||= App.load(app_id)
    end
    
    def doc_suffix(doctype)
      doctype = doctype.to_s
      if doctype == '*'
        "#{self.user_id}:#{self.id}:*"
      elsif self.source_name 
        "#{self.user_id}:#{self.id}:#{self.source_name}:#{doctype}"
      else
        raise InvalidSourceNameError.new('Invalid Source Name For Client')   
      end          
    end
    
    def delete
      flash_data('*')
      Rhosync.license.free_seat
      super
    end
    
    def update_clientdoc(sources)
      sources.each do |source|
        s = Source.load(source,{:app_id => app_id,:user_id => user_id})
        unless s.sync_type.to_sym == :bulk_sync_only
          self.source_name = source
          Store.clone(s.docname(:md_copy),self.docname(:cd))
        end
      end
    end
    
    def update_fields(params)
      [:device_type,:device_pin,:device_port].each do |setting|
        self.send "#{setting}=".to_sym, params[setting].to_s if params[setting]
      end
    end
    
    private
    
    def self.validate_attributes(params)
      raise ArgumentError.new('Missing required attribute source_name') unless params[:source_name]
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
rhosync-2.0.9 lib/rhosync/client.rb
rhosync-2.0.8 lib/rhosync/client.rb
rhosync-2.0.7 lib/rhosync/client.rb
rhosync-2.0.6 lib/rhosync/client.rb
rhosync-2.0.5 lib/rhosync/client.rb
rhosync-2.0.4 lib/rhosync/client.rb
rhosync-2.0.3 lib/rhosync/client.rb
rhosync-2.0.2 lib/rhosync/client.rb
rhosync-2.0.1 lib/rhosync/client.rb
rhosync-2.0.0 lib/rhosync/client.rb
rhosync-2.0.0.rc2 lib/rhosync/client.rb
rhosync-2.0.0.rc1 lib/rhosync/client.rb
rhosync-2.0.0.beta13 lib/rhosync/client.rb
rhosync-2.0.0.beta12 lib/rhosync/client.rb
rhosync-2.0.0.beta11 lib/rhosync/client.rb
rhosync-2.0.0.beta10 lib/rhosync/client.rb
rhosync-2.0.0.beta9 lib/rhosync/client.rb
rhosync-2.0.0.beta8 lib/rhosync/client.rb
rhosync-2.0.0.beta7 lib/rhosync/client.rb
rhosync-2.0.0.beta6 lib/rhosync/client.rb