Code Monkey home page Code Monkey logo

sentinel's Introduction

Sentinel

Build Status Code Climate

Sentinel is a SalesForce integration gem. This gem allows you to do simple data access operations, like find/create/update.

Installing

Add this line to your application's Gemfile:

gem 'sentinel', :git => '[email protected]:mandrakez/sentinel.git'

Then bundle install.

Usage

It depends on an OAuth2 integration, before you can execute any Sentinel operation, said that, we need to configure our OAuth credentials:

Example:

Sentinel.configure do |c|
  c.oauth_token = session['oauth_token']
  c.instance_url = session['instance_url']
end

I suggest you to use omniauth-salesforce to do that. I will not enter on details here, because you can find more information here.

How it works

This is a generic gem, so you can improve and use other entities provided by SalesForce.

Example:

class Contact
  include ActiveModel::Model
  include ActiveModel::Validations
  include Sentinel::Model

  # SalesForce entity, will use class name if absent
  set_sentinel_table 'Contact'

  # Entity field names
  # 'alias' will generate getters/setters with specific name
  field :FirstName, alias: :first_name
  field :LastName, alias: :last_name
  field :Email, alias: :email
  field :Phone, alias: :telephone

  class << self
    def last_contacts
      query("SELECT Id, FirstName, LastName, Email, Phone FROM Contact ORDER BY CreatedDate DESC LIMIT 100")
    end
  end

  def full_name
    "#{first_name} #{last_name}"
  end

  def persisted?
    !self.id.to_s.empty?
  end
end

Searching

> contact = Contact.find('1')
> puts contact.email
=> "[email protected]"

or more complex filtering

> contacts = Contact.query('SELECT Id, FirstName, LastName, Email, Phone FROM Contact LIMIT 10')

Creating

> contact = Contact.new
> contact.name = "John Doe"
> contact.email = '[email protected]'
> contact.save
=> true

or

> contact = Contact.new(name: 'John', email: '[email protected]')
> contact.save
=> true

Updating

> contact = Contact.find('1')
> contact.email = '[email protected]'
> contact.save
=> true

or

> contact = Contact.find('1')
> contact.update_attributes(email: '[email protected]')
=> true

Destroying

> Contact.destroy('1')
=> true

TODO

There is still so much work to do:

  • primary key probably should be a part of the model structure
  • avoid primary key updates
  • add new options to 'field' attributes:
  • read only flags
  • primary key
  • understand better SalesForce exceptions
  • increase test coverage

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

sentinel's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.