dynamic-records-meritfront 3.0.3 → 3.0.6

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
  SHA256:
3
- metadata.gz: 15173d17ad833e673910fc87f1dd1c6801105086f9a36e2042154c3e624fbc50
4
- data.tar.gz: 171e89a86eef3b0f75a92a75b4226ab401eda42ad9dd83bb4bed16b92ae439db
3
+ metadata.gz: aa816c1fc2d4e08950ff1f91c1bb4aa1d8025a4e845d62919e7254e449a6901f
4
+ data.tar.gz: 4649ad599b97346ca16ddbb5f07298fd0408d5028795fcfcb3e5f0b5d1f906c9
5
5
  SHA512:
6
- metadata.gz: 20cae9b9c791929d29002d171a837291c1e9315dc9bbb6b4a408212dd98ce408aae270a1b52caeb91f73995ac086e4ff9afd771b9a2a51878bea400881141c88
7
- data.tar.gz: 551ef2074974ae385c9759ac58c2c170faeb835ed87ca166d7ccfe38779b6f2d03d2f3a3fc06c53e3a05c38a93ccf014a240f13a7b78eb227810d8fcc5928151
6
+ metadata.gz: 2dbba9dee9ca11dab5665b0d96a2b13840f7bfff8eb28c859e8628119efb420924435ed06ca380dc9fec7408231cf7a7f9671429cc34c18c2e0536646324a3ba
7
+ data.tar.gz: cddf05b9c1f9eb9df8c1c7fb1a586dc618eed8a5f3fd0a0b8f8b4017d3bbb0beee66143c4925bd102af52d2ea6e302c5fda7384ca8c4f7cfafa8b481afefc0f8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dynamic-records-meritfront (3.0.3)
4
+ dynamic-records-meritfront (3.0.6)
5
5
  hashid-rails
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -67,7 +67,7 @@ A better and safer way to write sql. Can return either a Hash, ActiveRecord::Res
67
67
 
68
68
  ```ruby
69
69
  User.dynamic_sql('select * from users') #returns all users
70
- ApplicationRecord.dynamic_sql('select id from users', raw: true).rows.flatten #get just the users ids
70
+ ApplicationRecord.dynamic_sql('select * from users') #returns all user column information in an array
71
71
  ```
72
72
 
73
73
  with options:
@@ -149,27 +149,28 @@ Get users who match a list of ids. Uses a postgresql Array, see the potential is
149
149
  Do an upsert
150
150
 
151
151
  ```ruby
152
+ time = DateTime.now
152
153
  rows = uzrs.map{|u| [
153
154
  u.id, #user_id
154
155
  self.id, #conversation_id
155
156
  from, #invited_by
156
- t, #created_at
157
- t, #updated_at
157
+ :time, #created_at (We use symbols to denote other sql arguments)
158
+ :time, #updated_at
158
159
  ]}
159
160
  ApplicationRecord.dynamic_sql("upsert_conversation_invites_2", %Q{
160
161
  INSERT INTO conversation_participants (user_id, conversation_id, invited_by, created_at, updated_at)
161
162
  VALUES :rows
162
163
  ON CONFLICT (conversation_id,user_id)
163
164
  DO UPDATE SET updated_at = :time
164
- }, rows: rows, time: t)
165
+ }, rows: rows, time: time)
165
166
  ```
166
- This will output sql similar to below. Note this can be done for multiple conversation_participants. Also note that it only sent one time variable as an argument as dynamic_sql detected that we were sending duplicate information.
167
+ This will output sql similar to below. Note this can be done for multiple conversation_participants. Also note that we sent only one time variable during our request instead of duplicating it.
167
168
  ```sql
168
169
  INSERT INTO conversation_participants (user_id, conversation_id, invited_by, created_at, updated_at)
169
170
  VALUES ($1,$2,$3,$4,$4)
170
171
  ON CONFLICT (conversation_id,user_id)
171
172
  DO UPDATE SET updated_at = $4
172
- -- [["rows_1", 15], ["rows_2", 67], ["rows_3", 6], ["rows_4", "2022-10-13 20:49:27.441372"]]
173
+ -- [["rows_1", 15], ["rows_2", 67], ["rows_3", 6], [:time, "2022-10-13 20:49:27.441372"]]
173
174
  ```
174
175
  </details>
175
176
 
@@ -244,7 +245,7 @@ obj.has_association?(:votes) #false
244
245
  ```
245
246
  </details>
246
247
 
247
- #### self.dynamic_instaload_sql( *optional* name, insta_array, opts = { })
248
+ #### self.instaload_sql( *optional* name, insta_array, opts = { })
248
249
  *instaloads* a bunch of diffrent models at the same time by casting them to json before returning them. Kinda cool. Maybe a bit overcomplicated. Seems to be more efficient to preloading when i tested it.
249
250
  - name is passed to dynamic_sql and is the name of the sql request
250
251
  - opts are passed to dynamic_sql (except for the raw option which is set to true. Raw output is not allowed on this request)
@@ -264,7 +265,7 @@ out = ApplicationRecord.instaload_sql([
264
265
 
265
266
  ```ruby
266
267
  # the ruby entered
267
- output = ApplicationRecord.dynamic_instaload_sql([
268
+ output = ApplicationRecord.instaload_sql([
268
269
  User.instaload('SELECT id FROM users WHERE users.id = ANY (:user_ids) AND users.created_at > :time', table_name: 'limited_users', relied_on: true),
269
270
  User.instaload(%Q{
270
271
  SELECT friends.smaller_user_id AS id, friends.bigger_user_id AS friended_to
@@ -323,7 +324,7 @@ the output:
323
324
  </details>
324
325
 
325
326
  #### self.instaload(sql, table_name: nil, relied_on: false, dont_return: false)
326
- A method used to prepare data for the dynamic_instaload_sql method. It returns a hash of options.
327
+ A method used to prepare data for the instaload_sql method. It returns a hash of options.
327
328
  - klass called on: if called on an abstract class (ApplicationRecord) it will return a list of hashes with the data. Otherwise returns a list of the classes records.
328
329
  - table_name: sets the name of the temporary postgresql table. This can then be used in further instaload sql snippets.
329
330
  - relied_on: will make it so other instaload sql snippets can reference this table (it makes it use posrgresql's WITH operator)
@@ -349,7 +350,7 @@ User.instaload('SELECT id FROM users WHERE users.id = ANY (:user_ids) AND users.
349
350
  </details>
350
351
 
351
352
  #### self.dynamic_attach(instaload_sql_output, base_name, attach_name, base_on: nil, attach_on: nil, one_to_one: false)
352
- taking the output of the dynamic_instaload_sql, this method attaches the models together so they are attached.
353
+ taking the output of the instaload_sql method, this method creates relations between the models.
353
354
  - base_name: the name of the table we will be attaching to
354
355
  - attach_name: the name of the table that will be attached
355
356
  - base_on: put a proc here to override the matching key for the base table. Default is, for a user and post type, {|user| user.id}
@@ -357,7 +358,7 @@ taking the output of the dynamic_instaload_sql, this method attaches the models
357
358
  - one_to_one: switches between a one-to-one relationship or not
358
359
 
359
360
  <details>
360
- <summary> attach information for each limited_user in the dynamic_instaload_sql example </summary>
361
+ <summary> attach information for each limited_user in the instaload_sql example </summary>
361
362
 
362
363
  ```ruby
363
364
 
@@ -1,5 +1,5 @@
1
1
 
2
2
  module DynamicRecordsMeritfront
3
- VERSION = '3.0.3'
3
+ VERSION = '3.0.6'
4
4
  end
5
5
  #this file gets overwritten automatically on minor updates, major ones need to be manually changed
@@ -17,7 +17,7 @@ module DynamicRecordsMeritfront
17
17
  #should work, probably able to override by redefining in ApplicationRecord class.
18
18
  #Note we defined here as it breaks early on as Rails.application returns nil
19
19
  PROJECT_NAME = Rails.application.class.to_s.split("::").first.to_s.downcase
20
- DYNAMIC_SQL_RAW = false
20
+ DYNAMIC_SQL_RAW = true
21
21
  end
22
22
  class DynamicSqlVariables
23
23
  attr_accessor :sql_hash
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic-records-meritfront
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Clancy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-12 00:00:00.000000000 Z
11
+ date: 2022-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashid-rails