forest_liana 2.6.1 → 2.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7825474a2be0935a5146b4773dacf86a3bc235d5
4
- data.tar.gz: b49d46a5c6437577217acb96fc7153bd6734283e
3
+ metadata.gz: e2d05f6e1fc47af580463c80aa4280ec65496f31
4
+ data.tar.gz: a401f01f830a7f9c0f29cde8253d76d1e5d4685d
5
5
  SHA512:
6
- metadata.gz: c7401a19cbf53f08812bd083432f47e463bf49ad2dc6932220606f336bbe177a509e8a60aad2a09008de68f9ffb7f42ac33a6f2619fa7224892ed83a44a6f8bb
7
- data.tar.gz: 730f2b898f93860a23ec7bd95209bf65b471299ded19f79643409401ae2139102b243ea3008fcc75556ccc750151f59b3935534d4990e59fc6f44c0e89d73e82
6
+ metadata.gz: 19390d26df07518f0e348b309776cec643f66ba7b2b8d9f6e9450cbb1ace482031ae3ba04ab18818a4a63f2453eb1737a0265c512a020c2cee32a08c03c4674d
7
+ data.tar.gz: 9b1c599b01dd841082f876458a05c96e287a5b29e9a2b0c56a08c81a57966024ba8beb548b6bf855d5a5850d47c4d9bc020c07c62cd0424b20d5c2c5c7fa5b23
@@ -22,6 +22,9 @@ module ForestLiana
22
22
  format.json { render_jsonapi(getter) }
23
23
  format.csv { render_csv(getter, @resource) }
24
24
  end
25
+ rescue ForestLiana::Errors::LiveQueryError => error
26
+ render json: { errors: [{ status: 422, detail: error.message }] },
27
+ status: :unprocessable_entity, serializer: nil
25
28
  rescue => error
26
29
  FOREST_LOGGER.error "Records Index error: #{error}\n#{format_stacktrace(error)}"
27
30
  internal_server_error
@@ -34,8 +34,11 @@ module ForestLiana
34
34
  else
35
35
  render json: {status: 404}, status: :not_found, serializer: nil
36
36
  end
37
+ rescue ForestLiana::Errors::LiveQueryError => error
38
+ render json: { errors: [{ status: 422, detail: error.message }] },
39
+ status: :unprocessable_entity, serializer: nil
37
40
  rescue => error
38
- FOREST_LOGGER.error "Live Query error: #{error.message}"
41
+ FOREST_LOGGER.error "Live Query error: #{error.message}"
39
42
  render json: { errors: [{ status: 422, detail: error.message }] },
40
43
  status: :unprocessable_entity, serializer: nil
41
44
  end
@@ -0,0 +1,28 @@
1
+ module ForestLiana
2
+ class LiveQueryChecker
3
+ QUERY_SELECT = /\ASELECT\s.*FROM\s.*\z/im
4
+
5
+ def initialize(query, context)
6
+ @query = query
7
+ @context = context
8
+ end
9
+
10
+ def validate
11
+ raise generate_error 'You cannot execute an empty SQL query.' if @query.blank?
12
+
13
+ if @query.include?(';') && @query.index(';') < (@query.length - 1)
14
+ raise generate_error 'You cannot chain SQL queries.'
15
+ end
16
+
17
+ raise generate_error 'Only SELECT queries are allowed.' if QUERY_SELECT.match(@query).nil?
18
+ end
19
+
20
+ private
21
+
22
+ def generate_error message
23
+ error_message = "#{@context}: #{message}"
24
+ FOREST_LOGGER.error(error_message)
25
+ ForestLiana::Errors::LiveQueryError.new(error_message)
26
+ end
27
+ end
28
+ end
@@ -1,7 +1,5 @@
1
1
  module ForestLiana
2
2
  class QueryStatGetter
3
- QUERY_SELECT = /\ASELECT\s.*FROM\s.*\z/im
4
-
5
3
  attr_accessor :record
6
4
 
7
5
  def initialize(params)
@@ -11,7 +9,7 @@ module ForestLiana
11
9
  def perform
12
10
  raw_query = @params['query'].strip
13
11
 
14
- check_query(raw_query)
12
+ LiveQueryChecker.new(raw_query, 'Live Query Chart').validate()
15
13
 
16
14
  if @params['record_id']
17
15
  raw_query.gsub!('?', @params['record_id'].to_s)
@@ -69,14 +67,6 @@ module ForestLiana
69
67
 
70
68
  private
71
69
 
72
- def check_query(query)
73
- raise 'You cannot execute an empty SQL query.' if query.blank?
74
- if query.include?(';') && query.index(';') < (query.length - 1)
75
- raise 'You cannot chain SQL queries.'
76
- end
77
- raise 'Only SELECT queries are allowed.' if QUERY_SELECT.match(query).nil?
78
- end
79
-
80
70
  def error_message(result, key_names)
81
71
  "The result columns must be named #{key_names} instead of '#{result.keys.join("', '")}'"
82
72
  end
@@ -19,6 +19,22 @@ module ForestLiana
19
19
  @records = @records.where(@segment.where.call())
20
20
  end
21
21
 
22
+ # NOTICE: Live Query mode
23
+ if @params[:segmentQuery]
24
+ LiveQueryChecker.new(@params[:segmentQuery], 'Live Query Segment').validate()
25
+
26
+ begin
27
+ results = ActiveRecord::Base.connection.execute(@params[:segmentQuery])
28
+ rescue => error
29
+ error_message = "Live Query Segment: #{error.message}"
30
+ FOREST_LOGGER.error(error_message)
31
+ raise ForestLiana::Errors::LiveQueryError.new(error_message)
32
+ end
33
+
34
+ record_ids = results.to_a.map { |record| record['id'] }
35
+ @records = @records.where(id: record_ids)
36
+ end
37
+
22
38
  @records = search_query
23
39
  @records_to_count = @records
24
40
 
@@ -6,5 +6,11 @@ module ForestLiana
6
6
  super
7
7
  end
8
8
  end
9
+
10
+ class LiveQueryError < StandardError
11
+ def initialize(message="Invalid SQL query for this Live Query")
12
+ super
13
+ end
14
+ end
9
15
  end
10
16
  end
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "2.6.1"
2
+ VERSION = "2.7.0"
3
3
  end
Binary file
@@ -21751,3 +21751,448 @@ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribut
21751
21751
   (0.0ms) SAVEPOINT active_record_1
21752
21752
   (0.0ms) RELEASE SAVEPOINT active_record_1
21753
21753
   (0.0ms) rollback transaction
21754
+ ActiveRecord::SchemaMigration Load (0.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
21755
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
21756
+  (0.4ms)  SELECT sql
21757
+ FROM sqlite_master
21758
+ WHERE name='index_belongs_to_class_name_fields_on_foo_id' AND type='index'
21759
+ UNION ALL
21760
+ SELECT sql
21761
+ FROM sqlite_temp_master
21762
+ WHERE name='index_belongs_to_class_name_fields_on_foo_id' AND type='index'
21763
+ 
21764
+  (0.1ms) SELECT sql
21765
+ FROM sqlite_master
21766
+ WHERE name='index_belongs_to_fields_on_has_many_field_id' AND type='index'
21767
+ UNION ALL
21768
+ SELECT sql
21769
+ FROM sqlite_temp_master
21770
+ WHERE name='index_belongs_to_fields_on_has_many_field_id' AND type='index'
21771
+
21772
+  (0.1ms)  SELECT sql
21773
+ FROM sqlite_master
21774
+ WHERE name='index_belongs_to_fields_on_has_many_class_name_field_id' AND type='index'
21775
+ UNION ALL
21776
+ SELECT sql
21777
+ FROM sqlite_temp_master
21778
+ WHERE name='index_belongs_to_fields_on_has_many_class_name_field_id' AND type='index'
21779
+ 
21780
+  (0.1ms) SELECT sql
21781
+ FROM sqlite_master
21782
+ WHERE name='index_belongs_to_fields_on_has_one_field_id' AND type='index'
21783
+ UNION ALL
21784
+ SELECT sql
21785
+ FROM sqlite_temp_master
21786
+ WHERE name='index_belongs_to_fields_on_has_one_field_id' AND type='index'
21787
+
21788
+  (0.1ms)  SELECT sql
21789
+ FROM sqlite_master
21790
+ WHERE name='index_has_many_fields_on_has_many_through_field_id' AND type='index'
21791
+ UNION ALL
21792
+ SELECT sql
21793
+ FROM sqlite_temp_master
21794
+ WHERE name='index_has_many_fields_on_has_many_through_field_id' AND type='index'
21795
+ 
21796
+  (0.1ms) SELECT sql
21797
+ FROM sqlite_master
21798
+ WHERE name='index_polymorphic_fields_on_has_one_field_id' AND type='index'
21799
+ UNION ALL
21800
+ SELECT sql
21801
+ FROM sqlite_temp_master
21802
+ WHERE name='index_polymorphic_fields_on_has_one_field_id' AND type='index'
21803
+
21804
+  (0.1ms)  SELECT sql
21805
+ FROM sqlite_master
21806
+ WHERE name='index_trees_on_owner_id' AND type='index'
21807
+ UNION ALL
21808
+ SELECT sql
21809
+ FROM sqlite_temp_master
21810
+ WHERE name='index_trees_on_owner_id' AND type='index'
21811
+ 
21812
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
21813
+  (0.1ms) begin transaction
21814
+ Fixture Delete (1.1ms) DELETE FROM "has_many_through_fields"
21815
+ Fixture Insert (0.4ms) INSERT INTO "has_many_through_fields" ("id") VALUES (1)
21816
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (2)
21817
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (3)
21818
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (4)
21819
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (5)
21820
+ Fixture Insert (0.1ms) INSERT INTO "has_many_through_fields" ("id") VALUES (6)
21821
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (7)
21822
+ Fixture Insert (0.1ms) INSERT INTO "has_many_through_fields" ("id") VALUES (8)
21823
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (9)
21824
+ Fixture Insert (0.0ms) INSERT INTO "has_many_through_fields" ("id") VALUES (10)
21825
+ Fixture Delete (0.3ms) DELETE FROM "string_fields"
21826
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (1, 'Test 1')
21827
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (2, 'Test 2')
21828
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (3, 'Test 3')
21829
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (4, 'Test 4')
21830
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (5, 'Test 5')
21831
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (6, 'Test 6')
21832
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (7, 'Test 7')
21833
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (8, 'Test 8')
21834
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (9, 'Test 9')
21835
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (10, 'Test 10')
21836
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (11, 'Test 11')
21837
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (12, 'Test 12')
21838
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (13, 'Test 13')
21839
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (14, 'Test 14')
21840
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (15, 'Test 15')
21841
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (16, 'Test 16')
21842
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (17, 'Test 17')
21843
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (18, 'Test 18')
21844
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (19, 'Test 19')
21845
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (20, 'Test 20')
21846
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (21, 'Test 21')
21847
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (22, 'Test 22')
21848
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (23, 'Test 23')
21849
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (24, 'Test 24')
21850
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (25, 'Test 25')
21851
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (26, 'Test 26')
21852
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (27, 'Test 27')
21853
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (28, 'Test 28')
21854
+ Fixture Insert (0.1ms) INSERT INTO "string_fields" ("id", "field") VALUES (29, 'Test 29')
21855
+ Fixture Insert (0.0ms) INSERT INTO "string_fields" ("id", "field") VALUES (30, 'Test 30')
21856
+ Fixture Delete (1.3ms) DELETE FROM "belongs_to_fields"
21857
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (1, 1, 1)
21858
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (2, 2, 1)
21859
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (3, 3, 1)
21860
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (4, 4, 2)
21861
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (5, 5, 2)
21862
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (6, 6, 2)
21863
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (7, 7, 3)
21864
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (8, 8, 3)
21865
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (9, 9, 3)
21866
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (10, 10, 4)
21867
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (11, 11, 4)
21868
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (12, 12, 4)
21869
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (13, 13, 5)
21870
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (14, 14, 5)
21871
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (15, 15, 5)
21872
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (16, 16, 6)
21873
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (17, 17, 6)
21874
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (18, 18, 6)
21875
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (19, 19, 7)
21876
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (20, 20, 7)
21877
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (21, 21, 7)
21878
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (22, 22, 7)
21879
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (23, 23, 8)
21880
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (24, 24, 8)
21881
+ Fixture Insert (0.0ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (25, 25, 9)
21882
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (26, 26, 9)
21883
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (27, 27, 9)
21884
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (28, 28, 10)
21885
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (29, 29, 10)
21886
+ Fixture Insert (0.1ms) INSERT INTO "belongs_to_fields" ("id", "has_one_field_id", "has_many_field_id") VALUES (30, 30, 10)
21887
+ Fixture Delete (1.0ms) DELETE FROM "trees"
21888
+ Fixture Insert (0.2ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (1, 'Oak', 1, '2011-02-11 11:00:00.000000', '2011-02-11 11:00:00.000000')
21889
+ Fixture Insert (0.1ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (2, 'Mapple', 2, '2011-02-15 21:00:00.000000', '2011-02-15 21:00:00.000000')
21890
+ Fixture Insert (0.1ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (3, 'Mapple', 2, '2013-04-11 12:00:00.000000', '2013-04-11 12:00:00.000000')
21891
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (4, 'Oak', 2, '2016-06-18 09:00:00.000000', '2016-06-18 09:00:00.000000')
21892
+ Fixture Insert (0.1ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (5, 'Oak', 3, '2015-06-18 09:00:00.000000', '2015-06-18 09:00:00.000000')
21893
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (6, 'Oak', 3, '2018-06-01 18:27:39.000000', '2018-06-01 18:27:39.000000')
21894
+ Fixture Insert (0.0ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (7, 'Sequoia', 1, '2018-06-01 18:27:39.000000', '2018-06-01 18:27:39.000000')
21895
+ Fixture Insert (0.2ms) INSERT INTO "trees" ("id", "name", "owner_id", "created_at", "updated_at") VALUES (8, 'Fir', 1, '2018-06-01 18:27:39.000000', '2018-06-01 18:27:39.000000')
21896
+ Fixture Delete (0.6ms) DELETE FROM "has_one_fields"
21897
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (1, 't', 0)
21898
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (2, 't', 0)
21899
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (3, 't', 0)
21900
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (4, 't', 0)
21901
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (5, 't', 0)
21902
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (6, 't', 0)
21903
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (7, 't', 0)
21904
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (8, 't', 0)
21905
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (9, 't', 0)
21906
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (10, 't', 0)
21907
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (11, 't', 0)
21908
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (12, 't', 0)
21909
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (13, 't', 0)
21910
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (14, 't', 0)
21911
+ Fixture Insert (0.1ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (15, 't', 0)
21912
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (16, 't', 0)
21913
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (17, 't', 0)
21914
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (18, 't', 0)
21915
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (19, 't', 0)
21916
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (20, 't', 0)
21917
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (21, 't', 0)
21918
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (22, 't', 0)
21919
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (23, 't', 0)
21920
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (24, 't', 0)
21921
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (25, 't', 0)
21922
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (26, 't', 0)
21923
+ Fixture Insert (4.6ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (27, 't', 0)
21924
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (28, 't', 0)
21925
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (29, 't', 0)
21926
+ Fixture Insert (0.0ms) INSERT INTO "has_one_fields" ("id", "checked", "status") VALUES (30, 't', 1)
21927
+ Fixture Delete (0.5ms) DELETE FROM "owners"
21928
+ Fixture Insert (0.1ms) INSERT INTO "owners" ("id", "name", "created_at", "updated_at") VALUES (1, 'Sandro Munda', '2017-05-30 09:00:00.000000', '2018-06-27 20:00:00.000000')
21929
+ Fixture Insert (0.1ms) INSERT INTO "owners" ("id", "name", "created_at", "updated_at") VALUES (2, 'Arnaud Besnier', '2018-05-02 09:00:00.000000', '2018-06-28 08:00:00.000000')
21930
+ Fixture Insert (0.1ms) INSERT INTO "owners" ("id", "name", "created_at", "updated_at") VALUES (3, 'John Doe', '2016-05-02 09:00:00.000000', '2017-06-28 08:00:00.000000')
21931
+ Fixture Delete (0.9ms) DELETE FROM "has_many_fields"
21932
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id") VALUES (1)
21933
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id") VALUES (2)
21934
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id") VALUES (3)
21935
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id") VALUES (4)
21936
+ Fixture Insert (0.1ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (5, 3)
21937
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (6, 2)
21938
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (7)
21939
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id", "has_many_through_field_id") VALUES (8, 2)
21940
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (9)
21941
+ Fixture Insert (0.0ms) INSERT INTO "has_many_fields" ("id") VALUES (10)
21942
+ Fixture Delete (0.1ms) DELETE FROM "serialize_fields"
21943
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (1, 'value 1')
21944
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (2, 'value 2')
21945
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (3, 'value 3')
21946
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (4, 'value 4')
21947
+ Fixture Insert (0.0ms) INSERT INTO "serialize_fields" ("id", "field") VALUES (5, 'value 5')
21948
+  (2.4ms) commit transaction
21949
+  (0.0ms) begin transaction
21950
+ -----------------------------------------------------------
21951
+ ForestLiana::SchemaAdapterTest: test_belongsTo_relationship
21952
+ -----------------------------------------------------------
21953
+  (0.1ms) rollback transaction
21954
+  (0.2ms) begin transaction
21955
+ ----------------------------------------------------------------------------------
21956
+ ForestLiana::SchemaAdapterTest: test_hasMany_relationhip_with_specified_class_name
21957
+ ----------------------------------------------------------------------------------
21958
+  (0.1ms) rollback transaction
21959
+  (0.0ms) begin transaction
21960
+ --------------------------------------------------------
21961
+ ForestLiana::SchemaAdapterTest: test_hasOne_relationship
21962
+ --------------------------------------------------------
21963
+  (0.0ms) rollback transaction
21964
+  (0.1ms) begin transaction
21965
+ ---------------------------------------------------------------------
21966
+ ForestLiana::SchemaAdapterTest: test_Date_should_have_the_type_`Date`
21967
+ ---------------------------------------------------------------------
21968
+  (0.0ms) rollback transaction
21969
+  (0.0ms) begin transaction
21970
+ -------------------------------------------------------------------------
21971
+ ForestLiana::SchemaAdapterTest: test_DateTime_should_have_the_type_`Date`
21972
+ -------------------------------------------------------------------------
21973
+  (0.0ms) rollback transaction
21974
+  (0.0ms) begin transaction
21975
+ ------------------------------------------------------------------------
21976
+ ForestLiana::SchemaAdapterTest: test_Float_should_have_the_type_`Number`
21977
+ ------------------------------------------------------------------------
21978
+  (0.0ms) rollback transaction
21979
+  (0.1ms) begin transaction
21980
+ --------------------------------------------------------------------------
21981
+ ForestLiana::SchemaAdapterTest: test_Decimal_should_have_the_type_`Number`
21982
+ --------------------------------------------------------------------------
21983
+  (0.0ms) rollback transaction
21984
+  (0.0ms) begin transaction
21985
+ ------------------------------------------------------------------------------------
21986
+ ForestLiana::SchemaAdapterTest: test_belongsTo_relationhip_with_specified_class_name
21987
+ ------------------------------------------------------------------------------------
21988
+  (0.0ms) rollback transaction
21989
+  (0.1ms) begin transaction
21990
+ ---------------------------------------------------------------------------
21991
+ ForestLiana::SchemaAdapterTest: test_Boolean_should_have_the_type_`Boolean`
21992
+ ---------------------------------------------------------------------------
21993
+  (0.0ms) rollback transaction
21994
+  (0.0ms) begin transaction
21995
+ -------------------------------------------------------------------------
21996
+ ForestLiana::SchemaAdapterTest: test_String_should_have_the_type_`String`
21997
+ -------------------------------------------------------------------------
21998
+  (0.0ms) rollback transaction
21999
+  (0.0ms) begin transaction
22000
+ ---------------------------------------------------------
22001
+ ForestLiana::SchemaAdapterTest: test_hasMany_relationship
22002
+ ---------------------------------------------------------
22003
+  (0.1ms) rollback transaction
22004
+  (0.0ms) begin transaction
22005
+ --------------------------------------------------------------------------
22006
+ ForestLiana::SchemaAdapterTest: test_Integer_should_have_the_type_`Number`
22007
+ --------------------------------------------------------------------------
22008
+  (0.1ms) rollback transaction
22009
+  (0.1ms) begin transaction
22010
+ -----------------------------------
22011
+ ForestLiana::RouteTest: test_Routes
22012
+ -----------------------------------
22013
+  (0.1ms) rollback transaction
22014
+  (0.0ms) begin transaction
22015
+ -------------------------------------------------------------------------------------------
22016
+ ForestLiana::ResourcesGetterTest: test_Filter_on_an_updated_at_field_of_the_main_collection
22017
+ -------------------------------------------------------------------------------------------
22018
+ SQL (0.2ms) SELECT "owners"."id" AS t0_r0, "owners"."name" AS t0_r1, "owners"."created_at" AS t0_r2, "owners"."updated_at" AS t0_r3 FROM "owners" WHERE ("owners"."updated_at" BETWEEN '2017-01-01 08:00:00 UTC' AND '2018-01-01 07:59:59 UTC') ORDER BY owners.created_at DESC LIMIT 10 OFFSET 0
22019
+  (0.1ms) SELECT COUNT(*) FROM "owners" WHERE ("owners"."updated_at" BETWEEN '2017-01-01 08:00:00 UTC' AND '2018-01-01 07:59:59 UTC')
22020
+  (0.0ms) rollback transaction
22021
+  (0.0ms) begin transaction
22022
+ ----------------------------------------------------------
22023
+ ForestLiana::ResourcesGetterTest: test_Filter_after_x_days
22024
+ ----------------------------------------------------------
22025
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4 FROM "trees" WHERE ("trees"."created_at" > '2018-06-01 18:26:40 UTC') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
22026
+  (0.1ms) SELECT COUNT(*) FROM "trees" WHERE ("trees"."created_at" > '2018-06-01 18:26:40 UTC')
22027
+  (0.1ms) rollback transaction
22028
+  (0.0ms) begin transaction
22029
+ -----------------------------------------------------------------
22030
+ ForestLiana::ResourcesGetterTest: test_StringField_page_2_size_10
22031
+ -----------------------------------------------------------------
22032
+ SQL (0.1ms) SELECT "string_fields"."id" AS t0_r0, "string_fields"."field" AS t0_r1 FROM "string_fields" ORDER BY string_fields.id DESC LIMIT 10 OFFSET 10
22033
+  (0.1ms) SELECT COUNT(*) FROM "string_fields"
22034
+  (0.0ms) rollback transaction
22035
+  (0.1ms) begin transaction
22036
+ ------------------------------------------------------------------------------------------------------
22037
+ ForestLiana::ResourcesGetterTest: test_Filter_equal_on_an_updated_at_field_of_an_associated_collection
22038
+ ------------------------------------------------------------------------------------------------------
22039
+ SQL (0.2ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.updated_at = 'Sat Jul 02 2016 11:52:00 GMT-0400 (EDT)') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
22040
+  (0.1ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.updated_at = 'Sat Jul 02 2016 11:52:00 GMT-0400 (EDT)')
22041
+  (0.0ms) rollback transaction
22042
+  (0.0ms) begin transaction
22043
+ ------------------------------------------------------------------------------------
22044
+ ForestLiana::ResourcesGetterTest: test_Sort_on_an_ambiguous_field_name_with_a_filter
22045
+ ------------------------------------------------------------------------------------
22046
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.name = 'Arnaud Besnier') ORDER BY trees.name DESC LIMIT 10 OFFSET 0
22047
+  (0.5ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.name = 'Arnaud Besnier')
22048
+  (0.0ms) rollback transaction
22049
+  (0.7ms) begin transaction
22050
+ ------------------------------------------------------------------------------------------------
22051
+ ForestLiana::ResourcesGetterTest: test_Filter_on_an_updated_at_field_of_an_associated_collection
22052
+ ------------------------------------------------------------------------------------------------
22053
+ SQL (0.2ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.updated_at BETWEEN '2017-01-01 08:00:00 UTC' AND '2018-01-01 07:59:59 UTC') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
22054
+  (0.1ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE (owners.updated_at BETWEEN '2017-01-01 08:00:00 UTC' AND '2018-01-01 07:59:59 UTC')
22055
+  (0.1ms) rollback transaction
22056
+  (0.0ms) begin transaction
22057
+ -----------------------------------------------------------------------
22058
+ ForestLiana::ResourcesGetterTest: test_Sort_by_a_belongs_to_association
22059
+ -----------------------------------------------------------------------
22060
+ SQL (0.1ms) SELECT "belongs_to_fields"."id" AS t0_r0, "belongs_to_fields"."has_one_field_id" AS t0_r1, "belongs_to_fields"."has_many_class_name_field_id" AS t0_r2, "belongs_to_fields"."has_many_field_id" AS t0_r3, "has_one_fields"."id" AS t1_r0, "has_one_fields"."checked" AS t1_r1, "has_one_fields"."status" AS t1_r2, "has_many_fields"."id" AS t2_r0, "has_many_fields"."has_many_through_field_id" AS t2_r1, "has_many_class_name_fields"."id" AS t3_r0 FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" ORDER BY "has_one_fields"."id" ASC LIMIT 10 OFFSET 0
22061
+  (0.1ms) SELECT COUNT(*) FROM "belongs_to_fields"
22062
+  (0.1ms) rollback transaction
22063
+  (0.0ms) begin transaction
22064
+ --------------------------------------------------------------------
22065
+ ForestLiana::ResourcesGetterTest: test_Sort_by_a_has_one_association
22066
+ --------------------------------------------------------------------
22067
+ SQL (0.5ms) SELECT "has_one_fields"."id" AS t0_r0, "has_one_fields"."checked" AS t0_r1, "has_one_fields"."status" AS t0_r2, "belongs_to_fields"."id" AS t1_r0, "belongs_to_fields"."has_one_field_id" AS t1_r1, "belongs_to_fields"."has_many_class_name_field_id" AS t1_r2, "belongs_to_fields"."has_many_field_id" AS t1_r3, "belongs_to_class_name_fields"."id" AS t2_r0, "belongs_to_class_name_fields"."foo_id" AS t2_r1 FROM "has_one_fields" LEFT OUTER JOIN "belongs_to_fields" ON "belongs_to_fields"."has_one_field_id" = "has_one_fields"."id" LEFT OUTER JOIN "belongs_to_class_name_fields" ON "belongs_to_class_name_fields"."foo_id" = "has_one_fields"."id" ORDER BY "belongs_to_fields"."id" DESC LIMIT 10 OFFSET 0
22068
+  (0.1ms) SELECT COUNT(*) FROM "has_one_fields"
22069
+  (0.0ms) rollback transaction
22070
+  (0.0ms) begin transaction
22071
+ ----------------------------------------------------------------
22072
+ ForestLiana::ResourcesGetterTest: test_Filter_on_ambiguous_field
22073
+ ----------------------------------------------------------------
22074
+ SQL (0.2ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE ("trees"."created_at" > '2015-06-18 08:00:00') AND (owners.name = 'Arnaud Besnier') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
22075
+  (0.1ms) SELECT COUNT(DISTINCT "trees"."id") FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE ("trees"."created_at" > '2015-06-18 08:00:00') AND (owners.name = 'Arnaud Besnier')
22076
+  (0.0ms) rollback transaction
22077
+  (0.0ms) begin transaction
22078
+ -----------------------------------------------------------------
22079
+ ForestLiana::ResourcesGetterTest: test_StringField_page_1_size_15
22080
+ -----------------------------------------------------------------
22081
+ SQL (0.1ms) SELECT "string_fields"."id" AS t0_r0, "string_fields"."field" AS t0_r1 FROM "string_fields" ORDER BY string_fields.id DESC LIMIT 15 OFFSET 0
22082
+  (0.0ms) SELECT COUNT(*) FROM "string_fields"
22083
+  (0.0ms) rollback transaction
22084
+  (0.0ms) begin transaction
22085
+ ------------------------------------------------------------
22086
+ ForestLiana::ResourcesGetterTest: test_Filter_before_x_hours
22087
+ ------------------------------------------------------------
22088
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4 FROM "trees" WHERE ("trees"."created_at" < '2018-06-01 18:26:40 UTC') ORDER BY trees.created_at DESC LIMIT 10 OFFSET 0
22089
+  (0.0ms) SELECT COUNT(*) FROM "trees" WHERE ("trees"."created_at" < '2018-06-01 18:26:40 UTC')
22090
+ Owner Load (0.2ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 2]]
22091
+  (0.1ms) rollback transaction
22092
+  (0.0ms) begin transaction
22093
+ ----------------------------------------------------------------
22094
+ ForestLiana::ResourcesGetterTest: test_StringField_sort_by_field
22095
+ ----------------------------------------------------------------
22096
+ SQL (0.2ms) SELECT "string_fields"."id" AS t0_r0, "string_fields"."field" AS t0_r1 FROM "string_fields" ORDER BY string_fields.field DESC LIMIT 10 OFFSET 0
22097
+  (0.0ms) SELECT COUNT(*) FROM "string_fields"
22098
+  (0.0ms) rollback transaction
22099
+  (0.0ms) begin transaction
22100
+ ---------------------------
22101
+ ForestLianaTest: test_truth
22102
+ ---------------------------
22103
+  (0.0ms) rollback transaction
22104
+  (0.0ms) begin transaction
22105
+ -------------------------------------------------------------------------------------------------
22106
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_enum_field
22107
+ -------------------------------------------------------------------------------------------------
22108
+  (0.3ms) SELECT DISTINCT COUNT(DISTINCT "belongs_to_fields"."id") FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" WHERE ("has_one_fields"."status" = '1')
22109
+  (4.0ms) rollback transaction
22110
+  (0.1ms) begin transaction
22111
+ -----------------------------------------------------------------------------
22112
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_simple_filter
22113
+ -----------------------------------------------------------------------------
22114
+  (0.5ms) SELECT DISTINCT COUNT(DISTINCT "boolean_fields"."id") FROM "boolean_fields" WHERE ("boolean_fields"."field" = 1)
22115
+  (0.1ms) rollback transaction
22116
+  (0.1ms) begin transaction
22117
+ ----------------------------------------------------------------------------------------------------
22118
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_boolean_field
22119
+ ----------------------------------------------------------------------------------------------------
22120
+  (0.2ms) SELECT DISTINCT COUNT(DISTINCT "belongs_to_fields"."id") FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" WHERE ("has_one_fields"."checked" = 0)
22121
+  (0.1ms) rollback transaction
22122
+  (0.1ms) begin transaction
22123
+ ----------------------------------------------------------------------------------------------------
22124
+ ForestLiana::ValueStatGetterTest: test_Value_stat_getter_with_a_filter_on_a_belongs_to_integer_field
22125
+ ----------------------------------------------------------------------------------------------------
22126
+  (0.2ms) SELECT DISTINCT COUNT(DISTINCT "belongs_to_fields"."id") FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" WHERE ("has_one_fields"."id" = '3')
22127
+  (0.0ms) rollback transaction
22128
+  (0.1ms) begin transaction
22129
+ ---------------------------------------------------------------------------------------------------------
22130
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_bad_format_value
22131
+ ---------------------------------------------------------------------------------------------------------
22132
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
22133
+  (0.1ms) rollback transaction
22134
+  (0.0ms) begin transaction
22135
+ ------------------------------------------------------------------------------------------------------
22136
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_missing_value
22137
+ ------------------------------------------------------------------------------------------------------
22138
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
22139
+  (0.1ms) SAVEPOINT active_record_1
22140
+  (0.1ms) RELEASE SAVEPOINT active_record_1
22141
+  (0.1ms) rollback transaction
22142
+  (0.0ms) begin transaction
22143
+ ------------------------------------------------------------------------------------------------------------
22144
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_well_formated_value
22145
+ ------------------------------------------------------------------------------------------------------------
22146
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
22147
+  (0.0ms) SAVEPOINT active_record_1
22148
+ SQL (0.9ms) UPDATE "serialize_fields" SET "field" = ? WHERE "serialize_fields"."id" = ? [["field", "---\n- test\n- test\n"], ["id", 1]]
22149
+  (0.0ms) RELEASE SAVEPOINT active_record_1
22150
+  (0.5ms) rollback transaction
22151
+  (0.0ms) begin transaction
22152
+ ---------------------------------------------------------------------------------------------------
22153
+ ForestLiana::ResourceUpdaterTest: test_Update_a_record_on_a_"serialize"_attribute_with_a_null_value
22154
+ ---------------------------------------------------------------------------------------------------
22155
+ SerializeField Load (0.1ms) SELECT "serialize_fields".* FROM "serialize_fields" WHERE "serialize_fields"."id" = ? LIMIT 1 [["id", 1]]
22156
+  (0.0ms) SAVEPOINT active_record_1
22157
+ SQL (0.2ms) UPDATE "serialize_fields" SET "field" = ? WHERE "serialize_fields"."id" = ? [["field", nil], ["id", 1]]
22158
+  (0.0ms) RELEASE SAVEPOINT active_record_1
22159
+  (0.4ms) rollback transaction
22160
+  (0.1ms) begin transaction
22161
+ -----------------------------------------------------------------------------------------
22162
+ ForestLiana::PieStatGetterTest: test_Pie_stat_getter_with_an_aggregate_on_a_boolean_field
22163
+ -----------------------------------------------------------------------------------------
22164
+  (0.2ms) SELECT COUNT(*) AS count_all, boolean_fields.field AS boolean_fields_field FROM "boolean_fields" GROUP BY boolean_fields.field ORDER BY count_all DESC
22165
+  (0.0ms) rollback transaction
22166
+  (0.1ms) begin transaction
22167
+ ---------------------------------------------------------------------------------------
22168
+ ForestLiana::PieStatGetterTest: test_Pie_stat_getter_with_an_aggregate_on_a_foreign_key
22169
+ ---------------------------------------------------------------------------------------
22170
+  (0.6ms) SELECT COUNT(DISTINCT "belongs_to_fields"."id") AS count_id, belongs_to_fields.has_one_field_id AS belongs_to_fields_has_one_field_id FROM "belongs_to_fields" LEFT OUTER JOIN "has_one_fields" ON "has_one_fields"."id" = "belongs_to_fields"."has_one_field_id" LEFT OUTER JOIN "has_many_fields" ON "has_many_fields"."id" = "belongs_to_fields"."has_many_field_id" LEFT OUTER JOIN "has_many_class_name_fields" ON "has_many_class_name_fields"."id" = "belongs_to_fields"."has_many_class_name_field_id" GROUP BY belongs_to_fields.has_one_field_id ORDER BY count_id DESC
22171
+  (0.1ms) rollback transaction
22172
+  (0.1ms) begin transaction
22173
+ ------------------------------------------------------------------
22174
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_page_1_size_15
22175
+ ------------------------------------------------------------------
22176
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
22177
+ SQL (0.2ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? [["owner_id", 1]]
22178
+  (0.2ms) SELECT COUNT(DISTINCT count_column) FROM (SELECT "trees"."id" AS count_column FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? LIMIT 15 OFFSET 0) subquery_for_count [["owner_id", 1]]
22179
+ SQL (0.2ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? ORDER BY "trees"."id" ASC LIMIT 1 OFFSET 0 [["owner_id", 1]]
22180
+  (0.1ms) rollback transaction
22181
+  (0.1ms) begin transaction
22182
+ -------------------------------------------------------------------------
22183
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_with_search_parameter
22184
+ -------------------------------------------------------------------------
22185
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
22186
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? AND (LOWER("trees"."name") LIKE '%fir%') [["owner_id", 1]]
22187
+  (0.2ms) SELECT COUNT(DISTINCT count_column) FROM (SELECT "trees"."id" AS count_column FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? AND (LOWER("trees"."name") LIKE '%fir%') LIMIT 15 OFFSET 0) subquery_for_count [["owner_id", 1]]
22188
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? AND (LOWER("trees"."name") LIKE '%fir%') ORDER BY "trees"."id" ASC LIMIT 1 OFFSET 0 [["owner_id", 1]]
22189
+  (0.1ms) rollback transaction
22190
+  (0.0ms) begin transaction
22191
+ -----------------------------------------------------------------------
22192
+ ForestLiana::HasManyGetterTest: test_HasMany_Getter_with_sort_parameter
22193
+ -----------------------------------------------------------------------
22194
+ Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ? LIMIT 1 [["id", 1]]
22195
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? ORDER BY trees.id DESC [["owner_id", 1]]
22196
+  (0.1ms) SELECT COUNT(DISTINCT count_column) FROM (SELECT "trees"."id" AS count_column FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? LIMIT 15 OFFSET 0) subquery_for_count [["owner_id", 1]]
22197
+ SQL (0.1ms) SELECT "trees"."id" AS t0_r0, "trees"."name" AS t0_r1, "trees"."owner_id" AS t0_r2, "trees"."created_at" AS t0_r3, "trees"."updated_at" AS t0_r4, "owners"."id" AS t1_r0, "owners"."name" AS t1_r1, "owners"."created_at" AS t1_r2, "owners"."updated_at" AS t1_r3 FROM "trees" LEFT OUTER JOIN "owners" ON "owners"."id" = "trees"."owner_id" WHERE "trees"."owner_id" = ? ORDER BY trees.id DESC LIMIT 1 OFFSET 0 [["owner_id", 1]]
22198
+  (0.1ms) rollback transaction
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_liana
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.1
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-29 00:00:00.000000000 Z
11
+ date: 2018-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -183,6 +183,7 @@ files:
183
183
  - app/services/forest_liana/intercom_conversation_getter.rb
184
184
  - app/services/forest_liana/intercom_conversations_getter.rb
185
185
  - app/services/forest_liana/line_stat_getter.rb
186
+ - app/services/forest_liana/live_query_checker.rb
186
187
  - app/services/forest_liana/operator_date_interval_parser.rb
187
188
  - app/services/forest_liana/operator_value_parser.rb
188
189
  - app/services/forest_liana/pie_stat_getter.rb