pg_tags_on 0.1.2 → 0.4.0

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -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 +25 -141
  12. data/.gitignore +0 -12
  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