Class: Swiftype::DocumentType

Inherits:
BaseModel
  • Object
show all
Includes:
Search
Defined in:
lib/swiftype/document_type.rb

Constant Summary

Constants included from Search

Search::VALID_SEARCH_OPTIONS, Search::VALID_SUGGEST_OPTIONS

Instance Method Summary collapse

Methods included from Search

#parse_options, #parse_search_options, #parse_suggest_options

Methods inherited from BaseModel

collection_name, #create!, #destroy!, #id, #identifier, model_name, parents, #path_to_collection, #path_to_model, #raw_path_to_collection, #raw_path_to_model, #reload, #slugged?, #to_hash, #to_json, #update!, #update_with!

Methods included from Request

#delete, #get, #post, #put

Methods included from Connection

#connection

Instance Method Details

#build_document(params = {}) ⇒ Object



6
7
8
9
10
11
# File 'lib/swiftype/document_type.rb', line 6

def build_document(params={})
  Document.new({
    :document_type_id => id || slug,
    :engine_id => engine_id
  }.merge(params))
end

#create_document(params = {}) ⇒ Object



13
14
15
16
17
# File 'lib/swiftype/document_type.rb', line 13

def create_document(params={})
  doc = build_document(params)
  doc.create!
  doc
end

#create_documents(documents = []) ⇒ Object



19
20
21
# File 'lib/swiftype/document_type.rb', line 19

def create_documents(documents=[])
  post("engines/#{engine_id}/document_types/#{slug}/documents/bulk_create.json", {:documents => documents})
end

#destroy_document(document_id) ⇒ Object



32
33
34
35
36
# File 'lib/swiftype/document_type.rb', line 32

def destroy_document(document_id)
  !!delete("engines/#{engine_id}/document_types/#{slug}/documents/#{document_id}")
rescue NonExistentRecord
  false
end

#destroy_documents(document_ids = []) ⇒ Object



38
39
40
41
42
# File 'lib/swiftype/document_type.rb', line 38

def destroy_documents(document_ids=[])
  post("engines/#{engine_id}/document_types/#{slug}/documents/bulk_destroy.json", {:documents => document_ids})
rescue NonExistentRecord
  false
end

#document(id) ⇒ Object



44
45
46
# File 'lib/swiftype/document_type.rb', line 44

def document(id)
  Document.new get("engines/#{engine_id}/document_types/#{slug}/documents/#{id}.json")
end

#documentsObject



52
53
54
# File 'lib/swiftype/document_type.rb', line 52

def documents
  get("engines/#{engine_id}/document_types/#{slug}/documents.json").map { |d| Document.new(d) }
end

#engineObject



48
49
50
# File 'lib/swiftype/document_type.rb', line 48

def engine
  Engine.find(engine_id)
end

#search(query, options = {}) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/swiftype/document_type.rb', line 64

def search(query, options={})
  search_params = { :q => query }.merge(parse_search_options(options))
  response = post("engines/#{engine_id}/document_types/#{slug}/search.json", search_params)
  results = {}
  response['records'].each { |document_type, records| results[document_type] = records.map { |d| Swiftype::Document.new(d) }}
  results
end

#suggest(query, options = {}) ⇒ Object



56
57
58
59
60
61
62
# File 'lib/swiftype/document_type.rb', line 56

def suggest(query, options={})
  search_params = { :q => query }.merge(parse_suggest_options(options))
  response = post("engines/#{engine_id}/document_types/#{slug}/suggest.json", search_params)
  results = {}
  response['records'].each { |document_type, records| results[document_type] = records.map { |d| Swiftype::Document.new(d) }}
  results
end

#update_document(document = {}) ⇒ Object



27
28
29
30
# File 'lib/swiftype/document_type.rb', line 27

def update_document(document={})
  document_id = document[:external_id]
  put("engines/#{engine_id}/document_types/#{slug}/documents/#{document_id}/update_fields", {:fields => document[:fields]})
end

#update_documents(documents = []) ⇒ Object



23
24
25
# File 'lib/swiftype/document_type.rb', line 23

def update_documents(documents=[])
  put("engines/#{engine_id}/document_types/#{slug}/documents/bulk_update.json", {:documents => documents})
end