shanna-dm-sphinx-adapter 0.6 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,13 @@
1
+ === 0.6.1 / 2008-12-16
2
+
3
+ * The adapter returns the entire Riddle::Client#query response so document :weight and :attributes are usable.
4
+ * Fixed broken naming convention bug. The AbstractAdapter constructor was not being called.
5
+
6
+ === 0.6 / 2008-12-13
7
+
8
+ * Removed managed client and all related libs.
9
+ * Switched to Shoulda for tests in an effort to clean them up a bit.
10
+
1
11
  === 0.5 / 2008-12-01
2
12
 
3
13
  * Moved sphinx extended query string generator into a class of its own.
data/Rakefile CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'rubygems'
4
4
  require 'hoe'
5
5
 
6
- Hoe.new('dm-sphinx-adapter', '0.6') do |p|
6
+ Hoe.new('dm-sphinx-adapter', '0.6.1') do |p|
7
7
  p.developer('Shane Hanna', 'shane.hanna@gmail.com')
8
8
  p.extra_deps = [
9
9
  ['dm-core', '~> 0.9.7']
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{dm-sphinx-adapter}
5
- s.version = "0.6"
5
+ s.version = "0.6.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Shane Hanna"]
9
- s.date = %q{2008-12-13}
9
+ s.date = %q{2008-12-16}
10
10
  s.description = %q{A DataMapper Sphinx adapter.}
11
11
  s.email = ["shane.hanna@gmail.com"]
12
12
  s.extra_rdoc_files = ["History.txt", "LICENCE.txt", "Manifest.txt", "README.txt"]
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.rdoc_options = ["--main", "README.txt"]
17
17
  s.require_paths = ["lib"]
18
18
  s.rubyforge_project = %q{dm-sphinx-adapter}
19
- s.rubygems_version = %q{1.3.1}
19
+ s.rubygems_version = %q{1.3.0}
20
20
  s.summary = %q{A DataMapper Sphinx adapter.}
21
21
  s.test_files = ["test/test_adapter.rb", "test/test_attribute.rb", "test/test_index.rb", "test/test_query.rb", "test/test_resource.rb"]
22
22
 
@@ -1,5 +1,3 @@
1
- require 'benchmark'
2
-
3
1
  module DataMapper
4
2
  module Adapters
5
3
  module Sphinx
@@ -38,6 +36,8 @@ module DataMapper
38
36
  # uri_or_options<URI, DataObject::URI, Addressable::URI, String, Hash, Pathname>::
39
37
  # DataMapper uri or options hash.
40
38
  def initialize(name, uri_or_options)
39
+ super # Set up defaults.
40
+
41
41
  options = normalize_options(uri_or_options)
42
42
  @client = Riddle::Client.new(options.delete(:host), options.delete(:port))
43
43
  options.each{|k, v| @client.method("#{k}=".to_sym).call(v) if @client.respond_to?("#{k}=".to_sym)}
@@ -58,11 +58,13 @@ module DataMapper
58
58
  # These methods are public but normally called indirectly through DataMapper::Resource#get,
59
59
  # DataMapper::Resource#first or DataMapper::Resource#all.
60
60
  #
61
+ # The document hashes returned are those from Riddle::Client.
62
+ #
61
63
  # ==== Parameters
62
64
  # query<DataMapper::Query>:: The query object.
63
65
  #
64
66
  # ==== Returns
65
- # Array<Hash>:: An array of document hashes. <tt>[{:id => 1}, {:id => 2}]</tt>
67
+ # Array<Hash>:: An array of document hashes. <tt>[{:id => 1, ...}, {:id => 2, ...}]</tt>
66
68
  # Array<>:: An empty array if no documents match.
67
69
  def read_many(query)
68
70
  read(query)
@@ -79,7 +81,7 @@ module DataMapper
79
81
  # query<DataMapper::Query>:: The query object.
80
82
  #
81
83
  # ==== Returns
82
- # Hash:: An document hash of the first document matched. <tt>{:id => 1}</tt>
84
+ # Hash:: An document hash of the first document matched. <tt>{:id => 1, ...}</tt>
83
85
  # Nil:: If no documents match.
84
86
  def read_one(query)
85
87
  read(query).first
@@ -113,7 +115,7 @@ module DataMapper
113
115
  # query<DataMapper::Query>:: The query object.
114
116
  #
115
117
  # ==== Returns
116
- # Array<Hash>:: An array of document hashes. <tt>[{:id => 1}, {:id => 2}]</tt>
118
+ # Array<Hash>:: An array of document hashes. <tt>[{:id => 1, ...}, {:id => 2, ...}]</tt>
117
119
  # Array<>:: An empty array if no documents match.
118
120
  def read(query)
119
121
  from = indexes(query.model).map{|index| index.name}.join(', ')
@@ -136,7 +138,7 @@ module DataMapper
136
138
  DataMapper.logger.info(
137
139
  %q{Sphinx (%.3f): search '%s' in '%s' found %d documents} % [result[:time], search, from, result[:total]]
138
140
  )
139
- result[:matches].map{|doc| {:id => doc[:doc]}}
141
+ result[:matches].map{|doc| doc[:id] = doc[:doc]; doc}
140
142
  end
141
143
 
142
144
 
data/test/test_adapter.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestAdapter < Test::Unit::TestCase
4
- context 'DM::A::Sphinx::Adapter class' do
4
+ context 'DM::A::Sphinx::Adapter' do
5
5
  setup do
6
6
  DataMapper.setup(:adapter, :adapter => 'sphinx')
7
7
  load File.join(File.dirname(__FILE__), 'files', 'model.rb')
@@ -9,14 +9,30 @@ class TestAdapter < Test::Unit::TestCase
9
9
  @resource = Item
10
10
  end
11
11
 
12
+ context 'class' do
13
+ should 'use default field naming convention' do
14
+ assert_equal(
15
+ DataMapper::NamingConventions::Field::Underscored,
16
+ @it.adapter.field_naming_convention
17
+ )
18
+ end
19
+
20
+ should 'use default resource naming convention' do
21
+ assert_equal(
22
+ DataMapper::NamingConventions::Resource::UnderscoredAndPluralized,
23
+ @it.adapter.resource_naming_convention
24
+ )
25
+ end
26
+ end
27
+
12
28
  context '#create' do
13
- should 'should return zero records created' do
29
+ should 'return zero records created' do
14
30
  assert_equal 0, @it.create(create_resource)
15
31
  end
16
32
  end
17
33
 
18
34
  context '#delete' do
19
- should 'should return zero records deleted' do
35
+ should 'return zero records deleted' do
20
36
  assert_equal 0, @it.delete(create_resource)
21
37
  end
22
38
  end
@@ -24,26 +40,26 @@ class TestAdapter < Test::Unit::TestCase
24
40
  context '#read_many' do
25
41
  context 'conditions' do
26
42
  should 'return all objects when nil' do
27
- assert_equal [{:id => 1}, {:id => 2}, {:id => 3}], @it.read_many(query)
43
+ assert_equal [1, 2, 3], @it.read_many(query).map{|d| d[:id]}
28
44
  end
29
45
 
30
46
  should 'return subset of objects for conditions' do
31
- assert_equal [{:id => 2}], @it.read_many(query(:t_string => 'two'))
47
+ assert_equal [2], @it.read_many(query(:t_string => 'two')).map{|d| d[:id]}
32
48
  end
33
49
  end
34
50
 
35
51
  context 'offsets' do
36
52
  should 'be able to offset the objects' do
37
- assert_equal [{:id => 1}, {:id => 2}, {:id => 3}], @it.read_many(query(:offset => 0))
38
- assert_equal [{:id => 2}, {:id => 3}], @it.read_many(query(:offset => 1))
53
+ assert_equal [1, 2, 3], @it.read_many(query(:offset => 0)).map{|d| d[:id]}
54
+ assert_equal [2, 3], @it.read_many(query(:offset => 1)).map{|d| d[:id]}
39
55
  assert_equal [], @it.read_many(query(:offset => 3))
40
56
  end
41
57
  end
42
58
 
43
59
  context 'limits' do
44
60
  should 'be able to limit the objects' do
45
- assert_equal [{:id => 1}], @it.read_many(query(:limit => 1))
46
- assert_equal [{:id => 1}, {:id => 2}], @it.read_many(query(:limit => 2))
61
+ assert_equal [1], @it.read_many(query(:limit => 1)).map{|d| d[:id]}
62
+ assert_equal [1, 2], @it.read_many(query(:limit => 2)).map{|d| d[:id]}
47
63
  end
48
64
  end
49
65
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shanna-dm-sphinx-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.6"
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Hanna
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-13 00:00:00 -08:00
12
+ date: 2008-12-16 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency