pg_tags_on 0.1.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -2
  3. data/LICENSE.txt +1 -1
  4. data/README.md +30 -22
  5. data/lib/pg_tags_on/active_record/base.rb +1 -1
  6. data/lib/pg_tags_on/repositories/array_jsonb_repository.rb +47 -24
  7. data/lib/pg_tags_on/repositories/array_repository.rb +31 -18
  8. data/lib/pg_tags_on/repositories/base_repository.rb +39 -4
  9. data/lib/pg_tags_on/validations/validator.rb +4 -4
  10. data/lib/pg_tags_on/version.rb +1 -1
  11. metadata +21 -137
  12. data/.gitignore +0 -11
  13. data/.rspec +0 -3
  14. data/.rubocop.yml +0 -9
  15. data/CODE_OF_CONDUCT.md +0 -74
  16. data/Gemfile +0 -6
  17. data/Gemfile.lock +0 -91
  18. data/Rakefile +0 -16
  19. data/bin/console +0 -16
  20. data/bin/setup +0 -8
  21. data/pg_tags_on.gemspec +0 -38
  22. data/spec/array_integers/records_spec.rb +0 -47
  23. data/spec/array_integers/tag_ops_spec.rb +0 -65
  24. data/spec/array_integers/taggings_spec.rb +0 -27
  25. data/spec/array_integers/tags_spec.rb +0 -53
  26. data/spec/array_jsonb/records_spec.rb +0 -89
  27. data/spec/array_jsonb/tag_ops_spec.rb +0 -115
  28. data/spec/array_jsonb/taggings_spec.rb +0 -27
  29. data/spec/array_jsonb/tags_spec.rb +0 -41
  30. data/spec/array_strings/records_spec.rb +0 -61
  31. data/spec/array_strings/tag_ops_spec.rb +0 -65
  32. data/spec/array_strings/taggings_spec.rb +0 -27
  33. data/spec/array_strings/tags_spec.rb +0 -54
  34. data/spec/config/database.yml +0 -6
  35. data/spec/configuration_spec.rb +0 -48
  36. data/spec/helpers/database_helpers.rb +0 -46
  37. data/spec/spec_helper.rb +0 -39
  38. data/spec/support/factory.rb +0 -47
  39. data/spec/tags_query_spec.rb +0 -31
  40. data/spec/validator_spec.rb +0 -40
  41. data/tasks/benchmark.rake +0 -58
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe 'TagsQuery' do
4
- it 'accept String arguments' do
5
- query = PgTagsOn::TagsQuery.all('a')
6
-
7
- expect(query.value).to be_eql('a')
8
- expect(query.predicate).to be_eql('all')
9
- end
10
-
11
- it 'accept Integer arguments' do
12
- query = PgTagsOn::TagsQuery.all(1)
13
-
14
- expect(query.value).to be_eql(1)
15
- expect(query.predicate).to be_eql('all')
16
- end
17
-
18
- it 'accept Array arguments' do
19
- query = PgTagsOn::TagsQuery.all(%w[a b c])
20
-
21
- expect(query.value).to be_eql(%w[a b c])
22
- expect(query.predicate).to be_eql('all')
23
- end
24
-
25
- it 'accept arguments list' do
26
- query = PgTagsOn::TagsQuery.all('a', 'b', 'c')
27
-
28
- expect(query.value).to be_eql(%w[a b c])
29
- expect(query.predicate).to be_eql('all')
30
- end
31
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe 'Validator' do
4
- before(:all) do
5
- Entity.pg_tags_on :tags_str, limit: 2, tag_length: 3
6
- Entity.pg_tags_on :tags_jsonb, key: :name, limit: 2, tag_length: 3
7
- end
8
-
9
- context 'string tags' do
10
- it 'add errors if number of tags exceeds limit' do
11
- entity = Entity.new(tags_str: %w[a b c])
12
- entity.valid?
13
-
14
- expect(entity.errors.full_messages.first).to include('size exceeded')
15
- end
16
-
17
- it 'add errors if tag length exceeds limit' do
18
- entity = Entity.new(tags_str: %w[a x123])
19
- entity.valid?
20
-
21
- expect(entity.errors.full_messages.first).to include('length exceeded')
22
- end
23
- end
24
-
25
- context 'jsonb tags' do
26
- it 'add errors if number of tags exceeds limit' do
27
- entity = Entity.new(tags_jsonb: [{ name: 'a' }, { name: 'b' }, { name: 'c' }])
28
- entity.valid?
29
-
30
- expect(entity.errors.full_messages.first).to include('size exceeded')
31
- end
32
-
33
- it 'add errors if tag length exceeds limit' do
34
- entity = Entity.new(tags_jsonb: [{ name: 'x123' }])
35
- entity.valid?
36
-
37
- expect(entity.errors.full_messages.first).to include('length exceeded')
38
- end
39
- end
40
- end
data/tasks/benchmark.rake DELETED
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'benchmark'
4
- require './spec/helpers/database_helpers'
5
- require 'lib/pg_tags_on'
6
- require 'pry'
7
-
8
- namespace :pg_tags_on do
9
- task :benchmark do
10
- DatabaseHelpers.establish_connection
11
- DatabaseHelpers.load_schema
12
-
13
- Entity = Class.new(::ActiveRecord::Base)
14
- Entity.pg_tags_on :tags_int
15
- Entity.pg_tags_on :tags_str
16
- Entity.pg_tags_on :tags_jsonb, key: :name
17
-
18
- puts 'How many records to generate? (default 10_000)'
19
- records = STDIN.gets.chomp.to_i
20
- puts 'Minimum tags per record (default 1):'
21
- min_tags = STDIN.gets.chomp.to_i
22
- puts 'Maximum tags per record (default 10):'
23
- max_tags = STDIN.gets.chomp.to_i
24
-
25
- records = 10_000 if records.zero?
26
- min_tags = 1 if min_tags.zero?
27
- max_tags = 10 if max_tags.zero?
28
-
29
- data = []
30
- str_tags = Array.new(100) { Faker::Name.first_name }
31
-
32
- puts "Generating #{records} records..."
33
- records.times do
34
- tags_count = rand(min_tags..max_tags)
35
-
36
- data << {
37
- tags_int: Array.new(tags_count) { rand(1..100) },
38
- tags_str: str_tags.sample(tags_count),
39
- tags_jsonb: Array.new(tags_count) { { name: str_tags.sample } }
40
- }
41
-
42
- if data.size == 5_000
43
- Entity.insert_all data
44
- data = []
45
- end
46
- end
47
-
48
- Entity.insert_all(data) if data.present?
49
- puts 'Done'
50
-
51
- puts "\n\n* character varying[]\n\n"
52
- PgTagsOn::Benchmark.new(Entity, :tags_str).call
53
- puts "\n\n* integer[]\n\n"
54
- PgTagsOn::Benchmark.new(Entity, :tags_int).call
55
- puts "\n\n* jsonb[]\n\n"
56
- PgTagsOn::Benchmark.new(Entity, :tags_jsonb).call
57
- end
58
- end