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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49b6d40d5e29350f1911f16aa361beaad5b1ad28dfab6da452260cd535ff6dd1
4
- data.tar.gz: ba39dd57c6690a60b5d8e1ed466d7b42e25b745920ff5016030a405d89360f88
3
+ metadata.gz: 934cf9a5508b737b61cf47f6851ae487e9f59a39537bd8d941fef5a6458ed1bc
4
+ data.tar.gz: 10b7bdc7f0accf1a38c7179993ff248dd75811a194df5041c75d90d154e3bdd3
5
5
  SHA512:
6
- metadata.gz: 7f8c83ceedec1aa0dfee0bb9ab01c8123ce6bf58a1b75a5f6b6ea5ec083803ec917d526504c9f5897a274f40bf3eb2dd6ccd856b7f9ecee69b36c0ac2d90642a
7
- data.tar.gz: 6e673789ff292c0258411c9e46cf3a7a899f862771b760651acdc9c8662540fb9b1674650238a3472ac80275004f910f673ca516099b86eddc26c2151929ed23
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
- OpenStruct.new(name: name, type: type || 'string')
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.type %> :<%= attribute.name %>
7
+ t.<%= attribute[:type] %> :<%= attribute[:name] %>
8
8
  <% end -%>
9
9
 
10
10
  t.timestamps
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RlsMultiTenant
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.2"
5
5
  end
@@ -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.0
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