rls_multi_tenant 0.2.0 → 0.2.2
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 +4 -4
- data/lib/rls_multi_tenant/concerns/tenant_context.rb +10 -0
- data/lib/rls_multi_tenant/generators/model/model_generator.rb +1 -2
- data/lib/rls_multi_tenant/generators/model/templates/migration.rb +1 -1
- data/lib/rls_multi_tenant/version.rb +1 -1
- data/rls_multi_tenant.gemspec +0 -1
- metadata +1 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 934cf9a5508b737b61cf47f6851ae487e9f59a39537bd8d941fef5a6458ed1bc
|
|
4
|
+
data.tar.gz: 10b7bdc7f0accf1a38c7179993ff248dd75811a194df5041c75d90d154e3bdd3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f9fc94f2de6288ef68cf6f3c685992f137361213926a524c155293c29e27221b7c2a94b6e8cbcfb1431d414c72c63d7170c62f0c4f528f19f69551de9cce211e
|
|
7
|
+
data.tar.gz: eca7fc49c5432dd22fabacdd17b2edf86bf314a247c8c7513519e43640f2fa416534282b72d7026b8f9d8fc01391290f4c904d2b0ec374a4b0e811976b67789b
|
|
@@ -16,6 +16,7 @@ module RlsMultiTenant
|
|
|
16
16
|
# Switch tenant context for a block
|
|
17
17
|
def switch(tenant_or_id)
|
|
18
18
|
tenant_id = extract_tenant_id(tenant_or_id)
|
|
19
|
+
validate_tenant_exists!(tenant_id)
|
|
19
20
|
connection.execute format(SET_TENANT_ID_SQL, tenant_session_var, connection.quote(tenant_id))
|
|
20
21
|
yield
|
|
21
22
|
ensure
|
|
@@ -25,6 +26,7 @@ module RlsMultiTenant
|
|
|
25
26
|
# Switch tenant context permanently (until reset)
|
|
26
27
|
def switch!(tenant_or_id)
|
|
27
28
|
tenant_id = extract_tenant_id(tenant_or_id)
|
|
29
|
+
validate_tenant_exists!(tenant_id)
|
|
28
30
|
connection.execute format(SET_TENANT_ID_SQL, tenant_session_var, connection.quote(tenant_id))
|
|
29
31
|
end
|
|
30
32
|
|
|
@@ -59,6 +61,14 @@ module RlsMultiTenant
|
|
|
59
61
|
raise ArgumentError, "Expected #{RlsMultiTenant.tenant_class_name} object or tenant_id, got #{tenant_or_id.class}"
|
|
60
62
|
end
|
|
61
63
|
end
|
|
64
|
+
|
|
65
|
+
def validate_tenant_exists!(tenant_id)
|
|
66
|
+
return if tenant_id.blank?
|
|
67
|
+
|
|
68
|
+
unless RlsMultiTenant.tenant_class.exists?(id: tenant_id)
|
|
69
|
+
raise StandardError, "#{RlsMultiTenant.tenant_class_name} with id '#{tenant_id}' not found"
|
|
70
|
+
end
|
|
71
|
+
end
|
|
62
72
|
end
|
|
63
73
|
|
|
64
74
|
# Instance methods
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'rails/generators'
|
|
4
|
-
require 'ostruct'
|
|
5
4
|
|
|
6
5
|
module RlsMultiTenant
|
|
7
6
|
module Generators
|
|
@@ -73,7 +72,7 @@ module RlsMultiTenant
|
|
|
73
72
|
def parse_attributes!
|
|
74
73
|
attributes.map do |attr|
|
|
75
74
|
name, type = attr.split(':')
|
|
76
|
-
|
|
75
|
+
{ name: name, type: type || 'string' }
|
|
77
76
|
end
|
|
78
77
|
end
|
|
79
78
|
end
|
|
@@ -4,7 +4,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= Rails.version.to
|
|
|
4
4
|
create_table :<%= table_name %> do |t|
|
|
5
5
|
t.references :<%= tenant_id_column.to_s.gsub('_id', '') %>, null: false, foreign_key: { to_table: :<%= tenant_class_name.underscore.pluralize %> }, type: :uuid
|
|
6
6
|
<% @attributes.each do |attribute| -%>
|
|
7
|
-
t.<%= attribute
|
|
7
|
+
t.<%= attribute[:type] %> :<%= attribute[:name] %>
|
|
8
8
|
<% end -%>
|
|
9
9
|
|
|
10
10
|
t.timestamps
|
data/rls_multi_tenant.gemspec
CHANGED
|
@@ -34,7 +34,6 @@ Gem::Specification.new do |spec|
|
|
|
34
34
|
# Dependencies
|
|
35
35
|
spec.add_dependency "rails", ">= 6.0", "< 9.0"
|
|
36
36
|
spec.add_dependency "pg", ">= 1.0", "< 3.0"
|
|
37
|
-
spec.add_dependency "ostruct", ">= 0.1.0"
|
|
38
37
|
|
|
39
38
|
# Development dependencies
|
|
40
39
|
spec.add_development_dependency "rspec-rails", "~> 6.0"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rls_multi_tenant
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Coding Ways
|
|
@@ -49,20 +49,6 @@ dependencies:
|
|
|
49
49
|
- - "<"
|
|
50
50
|
- !ruby/object:Gem::Version
|
|
51
51
|
version: '3.0'
|
|
52
|
-
- !ruby/object:Gem::Dependency
|
|
53
|
-
name: ostruct
|
|
54
|
-
requirement: !ruby/object:Gem::Requirement
|
|
55
|
-
requirements:
|
|
56
|
-
- - ">="
|
|
57
|
-
- !ruby/object:Gem::Version
|
|
58
|
-
version: 0.1.0
|
|
59
|
-
type: :runtime
|
|
60
|
-
prerelease: false
|
|
61
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
62
|
-
requirements:
|
|
63
|
-
- - ">="
|
|
64
|
-
- !ruby/object:Gem::Version
|
|
65
|
-
version: 0.1.0
|
|
66
52
|
- !ruby/object:Gem::Dependency
|
|
67
53
|
name: rspec-rails
|
|
68
54
|
requirement: !ruby/object:Gem::Requirement
|