dynamic-records-meritfront 3.0.3 → 3.0.6

Sign up to get free protection for your applications and to get access to all the features.
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