team_fastlane-config_client_sequel 1.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2c5f9caf8451caf6ad714f5fcb64ad2c699a57c7bbc09b86313fae4f44a16e3c
4
+ data.tar.gz: abc1bb03e374d7784a53f95a335220769ac3ae39933ec8e94ce6566532b5ba99
5
+ SHA512:
6
+ metadata.gz: 8267ef6fb09e5fb64e80b8b37240cf6e0643e701628eb6ffc5701685d5fa14603246712c7329bc8bbe9d31fa558f6ee40ad23b63ddfa78afc1b4f84884e149eb
7
+ data.tar.gz: d3d591e7adf94df896363075397119bf20c4f8fef6c6d618c215106e6bb3f67725ce40edf317dfe923394e9373b5c6a6ad0fc5f689e683de509985d3cbd990b3
data/CHANGELOG.adoc ADDED
@@ -0,0 +1,32 @@
1
+ = Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on https://keepachangelog.com[Keep a Changelog],
6
+ and this project adheres to https://semver.org[Semantic Versioning].
7
+
8
+ == Unreleased
9
+
10
+ == [1.0.0] - 2023-08-01
11
+ === Changed
12
+ Renamed and restructured for release on rubygems
13
+
14
+ == [0.0.5] - 2022-01-04
15
+ === Changed
16
+ - Rails 7 support
17
+
18
+ == [0.0.4] - 2022-01-03
19
+ === Changed
20
+ - Small refactoring to comply to rubocop
21
+
22
+ == [0.0.3] - 2020-07-21
23
+ === Added
24
+ - Allows to load SKeys by topic only. Results are grouped by subtopic then.
25
+
26
+ == [0.0.2] - 2020-07-14
27
+ === Added
28
+ - Makes SKey loading more robust by allowing symbols and strings.
29
+
30
+ == [0.0.1] - 2020-07-14
31
+ === Added
32
+ - Initial gem version based on the config_client.
data/README.adoc ADDED
@@ -0,0 +1,7 @@
1
+ = Config Client
2
+
3
+ A client for accessing config data from the database that uses Sequel as database adapter.
4
+
5
+ == Installation & Usage
6
+
7
+ As described by the link:../README.adoc[main readme].
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CCustcomppara < Sequel::Model(:c_custcomppara)
4
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CFeatureToggle < Sequel::Model(:c_feature_toggles)
4
+ def self.active?(keyword)
5
+ first(s_keyword: keyword.to_s)&.c_active == 'Y'
6
+ end
7
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ class SKey < Sequel::Model(:s_key)
4
+ def self.load_key!(topic, subtopic, keyword)
5
+ first(s_topic: topic.to_s, s_subtopic: subtopic.to_s, s_keyword: keyword.to_s.upcase)&.value
6
+ end
7
+
8
+ def self.load_multiple_keys(topic, subtopic = nil)
9
+ return load_multiple_keys_with_subtopic(topic) if subtopic.blank?
10
+
11
+ where(s_topic: topic.to_s, s_subtopic: subtopic.to_s).to_h do |s_key|
12
+ [s_key.s_keyword.underscore.to_sym, s_key.value]
13
+ end.freeze
14
+ end
15
+
16
+ def value
17
+ c_type.casecmp('C').zero? ? c_value : i_value
18
+ end
19
+
20
+ def self.load_multiple_keys_with_subtopic(topic)
21
+ keys_by_subtopic = {}
22
+ where(s_topic: topic.to_s).map do |s_key|
23
+ keys_by_subtopic[s_key.s_subtopic.to_sym] = [] if keys_by_subtopic[s_key.s_subtopic.to_sym].blank?
24
+ keys_by_subtopic[s_key.s_subtopic.to_sym] << [s_key.s_keyword.underscore.to_sym, s_key.value]
25
+ end
26
+ keys_by_subtopic.transform_values { |keys| keys.to_h.freeze }.freeze
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CustomerCompanyConfigs < Hash
4
+ def [](customer_company)
5
+ super(customer_company.to_i)
6
+ end
7
+ end
8
+
9
+ Rails.application.config.to_prepare do
10
+ Object.send(:remove_const, :CUSTOMER_COMPANY_CONFIGS) if Object.const_defined? :CUSTOMER_COMPANY_CONFIGS
11
+ CUSTOMER_COMPANY_CONFIGS = CustomerCompanyConfigs.new # rubocop:disable Lint/ConstantDefinitionInBlock
12
+
13
+ unless Rails.env.test?
14
+ CCustcomppara.pluck(:i_cust_company).each do |customer_company_id|
15
+ CUSTOMER_COMPANY_CONFIGS[customer_company_id] =
16
+ TeamFastlane::ConfigClientSequel::CustomerCompany.new(id: customer_company_id, company_id: 1)
17
+ end
18
+ CUSTOMER_COMPANY_CONFIGS.freeze
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ # TODO: not safe for multi company environment
4
+ module TeamFastlane
5
+ module ConfigClientSequel
6
+ CustomerCompany = Struct.new(:id, :language, keyword_init: true) do
7
+ def initialize(company_id:, **args)
8
+ super(args)
9
+ c_custcomppara = CCustcomppara.first(i_company: company_id, i_cust_company: id)
10
+ self.language = c_custcomppara&.s_language&.downcase
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TeamFastlane
4
+ module ConfigClientSequel
5
+ VERSION = '1.0.0'
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'team_fastlane/config_client_sequel/customer_company'
4
+ require 'team_fastlane/config_client_sequel/version'
5
+
6
+ module TeamFastlane
7
+ module ConfigClientSequel
8
+ class Engine < Rails::Engine
9
+ end
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: team_fastlane-config_client_sequel
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Team Fastlane
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-08-02 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files:
18
+ - README.adoc
19
+ - CHANGELOG.adoc
20
+ files:
21
+ - CHANGELOG.adoc
22
+ - README.adoc
23
+ - app/models/c_custcomppara.rb
24
+ - app/models/c_feature_toggle.rb
25
+ - app/models/s_key.rb
26
+ - config/initializers/customer_company_configs.rb
27
+ - lib/team_fastlane/config_client_sequel.rb
28
+ - lib/team_fastlane/config_client_sequel/customer_company.rb
29
+ - lib/team_fastlane/config_client_sequel/version.rb
30
+ homepage:
31
+ licenses:
32
+ - MIT
33
+ metadata:
34
+ rubygems_mfa_required: 'true'
35
+ post_install_message:
36
+ rdoc_options: []
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '2.7'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ requirements: []
50
+ rubygems_version: 3.4.10
51
+ signing_key:
52
+ specification_version: 4
53
+ summary: Gem for an internal project
54
+ test_files: []