Description
Salesforce API Client.
Description
This package provides bindings to Salesforce API https://github.com/tzmfreedom/hsforce#readme
README.md
hsforce
Usage
Login and create Salesforce client.
main :: IO ()
main = do
  username <- getEnv "SALESFORCE_USERNAME"
  password <- getEnv "SALESFORCE_PASSWORD"
  endpoint <- getEnv "SALESFORCE_ENDPOINT"
  version <- getEnv "SALESFORCE_VERSION"
  client <- login username password endpoint version
create data type that is SObject class.
import Data.Aeson as JSON
import Data.Maybe
data Account = Account{
  sfid :: Maybe String,
  name :: Maybe String,
  ex :: Maybe String
} deriving Show
instance SObject Account where
  typeName a = "Account"
  getSfid = fromJust . sfid
instance FromJSON Account where
  parseJSON = withObject "Account" $ \v -> do
    sfid <- v .: "Id"
    name <- v .:? "Name"
    ex <- v .:? "Ex__c"
    return Account{..}
instance ToJSON Account where
  toJSON (Account{sfid, name, ex}) =
    object ["Name" .= name]
CRUD API
-- insert object
insert client Account{sfid = Nothing, name = Just "hogehoge", ex = Nothing}
-- update object
update client Account{sfid = Just "xxxx", name = Just "foobar"}
-- upsert object
upsert client Account{sfid = Nothing, name = Just "foobar", ex = Just "aaa"} "Ex__c" "aaa"
-- delete object
delete client Account{sfid = Just "xxxx"}
-- query
query client "SELECT Id, Name FROM Account WHERE Name = 'foobar'" (Proxy :: Proxy Account)
-- queryMore
queryMore client "/services/data/v20.0/query/01gD0000002HU6KIAW-2000" (Proxy :: Proxy Account)
-- queryAll
queryAll client "SELECT Id, Name FROM Account WHERE Name = 'foobar'" (Proxy :: Proxy Account)
-- queryAllMore
queryAllMore client "/services/data/v20.0/queryMore/01gD0000002HU6KIAW-2000" (Proxy :: Proxy Account)
-- explain
explain client "SELECT Id FROM Account"
-- describe
describe client "Account" (Proxy :: Proxy Account)
-- describeDetail
describeDetail client "Account"
-- describeGlobal
describeGlobal client
-- recordCount
recordCount client ["Account", "Contact", "Opportunity"]
-- versions
versions client