cool_id 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +15 -0
  3. data/README.md +61 -18
  4. data/lib/cool_id/version.rb +1 -1
  5. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5284982eed15e82c55f1e8a1c853c83feb97d76d7e04fb247b74e6edcbfdcf0e
4
- data.tar.gz: 21f44586d37a4a27474dcc984179cc6b8e927ae43da371e5d80874c82a314d43
3
+ metadata.gz: 0d44c3207248595af232a200cf0e809224d74033d97d3cac52c6d06d5416b682
4
+ data.tar.gz: d221baeb8e79ea8ea8ca2b9503685e4bfa7cb8d57b53a3ba0e4d301138a08300
5
5
  SHA512:
6
- metadata.gz: 9f8a012d217a3435e87f9df231fce5e850e92cc7ded853fff79cca4f721058f0175912aab2a25c8671defb208453e137884c59a9ec8041a8d1d2aad2f032cb74
7
- data.tar.gz: ad7af3d92a6f4b5a067fe535020d9cdd44d53ddd6584ba89555a74bcc83a4cc6a959f7e4cfb857c1961d85dbfe55bd5d0395afe1aed65680d2ae3dab34ab5688
6
+ metadata.gz: 9ed700560671d811b0678c4fbe8f9e086c3ca0c9e8d04a54b7d40d586b20864e2add65adb9e5e53feb7915e472974dbfa6b31313dd6a64f4008aaf3f31503f70
7
+ data.tar.gz: df1cdc3098d9b4761a220fedeca362eeaeb5677d92ca7da594dc946223d814c81bb59db757ff08292fe72e3ce499dd95e1cc002ccf27c436aa097617bd14f2a9
data/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) Peter Schilling
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ PERFORMANCE OF THIS SOFTWARE.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # cool_id
2
2
 
3
- a gem for rails that generates string ids for active record models with a per-model prefix followed by a nanoid.
3
+ a gem for rails that generates string primary key ids for active record models with a per-model prefix followed by a nanoid. this lets you create stripe style ids in your own rails app, and they'll be the same ids you see in your database.
4
4
 
5
5
  ```ruby
6
6
  class User < ActiveRecord::Base
@@ -10,26 +10,18 @@ end
10
10
 
11
11
  User.create!(name: "...").id
12
12
  # => "usr_vktd1b5v84lr"
13
-
14
- class Customer < ActiveRecord::Base
15
- include CoolId::Model
16
- cool_id prefix: "cus", alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", length: 8
17
- end
18
-
19
- Customer.create!(name: "...").id
20
- # => "cus_UHNYBINU"
21
13
  ```
22
14
 
23
- it can also lookup records by ids, similar to global id:
15
+ it can also lookup records similar to global id:
24
16
 
25
17
  ```ruby
26
- user = User.create!(name: "John Doe")
27
- # => #<User id: "usr_vktd1b5v84lr", name: "John Doe">
28
-
29
18
  CoolId.locate("usr_vktd1b5v84lr")
30
19
  # => #<User id: "usr_vktd1b5v84lr", name: "John Doe">
20
+ ```
31
21
 
32
- # You can also parse the id without fetching the record
22
+ and parse ids
23
+
24
+ ```ruby
33
25
  parsed = CoolId.parse("usr_vktd1b5v84lr")
34
26
  # => #<struct CoolId::Id key="vktd1b5v84lr", prefix="usr", id="usr_vktd1b5v84lr", model_class=User>
35
27
 
@@ -37,8 +29,41 @@ parsed.model_class
37
29
  # => User
38
30
  ```
39
31
 
32
+ and generate ids without creating a record
33
+
34
+ ```ruby
35
+ # generate an id, e.g. for batch inserts or upserts
36
+ User.generate_cool_id
37
+ # => "usr_vktd1b5v84lr"
38
+
39
+ ```
40
+
41
+ it takes parameters to change the alphabet or length
42
+
43
+ ```ruby
44
+ class Customer < ActiveRecord::Base
45
+ include CoolId::Model
46
+ cool_id prefix: "cus", alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", length: 8
47
+ end
48
+
49
+ Customer.create!(name: "...").id
50
+ # => "cus_UHNYBINU"
51
+ ```
52
+
53
+ and these can be configured globally
54
+
55
+ ```ruby
56
+ CoolId.configure do |config|
57
+ config.separator = "-"
58
+ config.alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
59
+ config.length = 8
60
+ end
61
+ ```
62
+
40
63
  ## installation
41
64
 
65
+ add cool_id to your Gemfile:
66
+
42
67
  ```bash
43
68
  bundle add cool_id
44
69
  ```
@@ -47,7 +72,7 @@ bundle add cool_id
47
72
  gem "cool_id"
48
73
  ```
49
74
 
50
- ### per-model
75
+ ### using cool_id in one model
51
76
 
52
77
  use string ids when creating a table
53
78
 
@@ -66,9 +91,9 @@ class User < ActiveRecord::Base
66
91
  end
67
92
  ```
68
93
 
69
- ### all models
94
+ ### using cool_id on all models
70
95
 
71
- use string ids on all new generated migrations
96
+ you have drank the coolaid. setup rails to use string ids on all new generated migrations
72
97
 
73
98
  ```ruby
74
99
  # config/initializers/generators.rb
@@ -77,7 +102,7 @@ Rails.application.config.generators do |g|
77
102
  end
78
103
  ```
79
104
 
80
- setup `ApplicationRecord` to include cool id and ensure it's setup in classes that inherit from it
105
+ then setup `ApplicationRecord` to include cool id and ensure it's setup in classes that inherit from it
81
106
 
82
107
  ```ruby
83
108
  # app/models/application_record.rb
@@ -87,3 +112,21 @@ class ApplicationRecord < ActiveRecord::Base
87
112
  enforce_cool_id_for_descendants
88
113
  end
89
114
  ```
115
+
116
+ ### graphql
117
+
118
+ if you use the graphql ruby node interface, you can implement [object identification](https://graphql-ruby.org/schema/object_identification)
119
+
120
+
121
+ ```ruby
122
+ # app/graphql/app_schema.rb
123
+ class AppSchema < GraphQL::Schema
124
+ def self.id_from_object(object, type_definition, query_ctx)
125
+ object.id
126
+ end
127
+
128
+ def self.object_from_id(id, query_ctx)
129
+ CoolId.locate(id)
130
+ end
131
+ end
132
+ ```
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CoolId
4
- VERSION = "0.1.5"
4
+ VERSION = "0.1.6"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cool_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Schilling
@@ -76,13 +76,15 @@ files:
76
76
  - ".rspec"
77
77
  - ".standard.yml"
78
78
  - CHANGELOG.md
79
+ - LICENSE
79
80
  - README.md
80
81
  - Rakefile
81
82
  - lib/cool_id.rb
82
83
  - lib/cool_id/version.rb
83
84
  - sig/cool_id.rbs
84
85
  homepage: https://github.com/schpet/cool_id
85
- licenses: []
86
+ licenses:
87
+ - ISC
86
88
  metadata:
87
89
  homepage_uri: https://github.com/schpet/cool_id
88
90
  source_code_uri: https://github.com/schpet/cool_id