Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
78723cb
feat: add skeleton datasource toolkit gem
nicolasalexandre9 Sep 13, 2023
9fa5b03
chore: update rubocop config
nicolasalexandre9 Sep 13, 2023
97b27ad
chore: lint test
nicolasalexandre9 Sep 13, 2023
8c651b5
feat: add forest exception
nicolasalexandre9 Sep 14, 2023
054d4ba
feat: add datasource and collection interface
nicolasalexandre9 Sep 14, 2023
925e9ae
feat: add base datasource and base collection
nicolasalexandre9 Sep 14, 2023
1e90fdd
feat(schema): add column schema and relations schema
nicolasalexandre9 Sep 14, 2023
c08263e
fix: datasource toolkit arborecense
nicolasalexandre9 Sep 19, 2023
029ffa8
chore: remove unused class
nicolasalexandre9 Sep 19, 2023
017299d
feat(datasource): add active record datasource
nicolasalexandre9 Sep 19, 2023
2e3f9a2
chore: update rubocop config
nicolasalexandre9 Sep 19, 2023
a71ec8b
chore: lint
nicolasalexandre9 Sep 20, 2023
d97f11c
feat(datasource): add active record datasource
nicolasalexandre9 Sep 21, 2023
f1c0e3c
chore: lint
nicolasalexandre9 Sep 21, 2023
5fc07cc
feat: add generation of forestadmin-schema
nicolasalexandre9 Sep 22, 2023
c817f14
test: add tests on base collection and base datasource
nicolasalexandre9 Sep 22, 2023
6575314
test: add tests on column schema and relation schema
nicolasalexandre9 Sep 25, 2023
945f9aa
test: add tests on forest exception
nicolasalexandre9 Sep 25, 2023
505b815
test: add tests on collection contract and datasource contract
nicolasalexandre9 Sep 25, 2023
ca58c17
test: add tests on datasource active record
nicolasalexandre9 Sep 27, 2023
1350b19
chore: update all rspec configurations
nicolasalexandre9 Sep 27, 2023
d44ea92
chore: fix dependency version
nicolasalexandre9 Sep 27, 2023
75f3662
chore: lint
nicolasalexandre9 Sep 27, 2023
0bce8dd
chore: force rename case sensitive relations folder
nicolasalexandre9 Sep 27, 2023
09e14aa
test: add missing tests on datasource toolkit
nicolasalexandre9 Sep 27, 2023
be2f001
test: add tests on generator field for all relations schema
nicolasalexandre9 Sep 27, 2023
63b12b6
test: add test on generate field for column schema
nicolasalexandre9 Sep 28, 2023
c1efe01
test: add tests on generate collection
nicolasalexandre9 Sep 28, 2023
015ec2d
test: add tests on schema emitter
nicolasalexandre9 Sep 28, 2023
76af19b
test: update test on generator field
nicolasalexandre9 Sep 29, 2023
7595e98
chore: lint
nicolasalexandre9 Sep 29, 2023
56a7f0f
chore: lint
nicolasalexandre9 Sep 29, 2023
0f69be5
chore: add config coverage & release for packages datasource_active_r…
matthv Sep 29, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/build.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,6 +16,8 @@ jobs:
ruby-version: ['3.0', '3.1', '3.2']
package:
- forest_admin_agent
- forest_admin_datasource_active_record
- forest_admin_datasource_toolkit
- forest_admin_rails

steps:
Expand DownExpand Up@@ -97,6 +99,8 @@ jobs:
with:
coverageLocations: |
${{github.workspace}}/reports/forest_admin_agent/coverage.json:simplecov
${{github.workspace}}/reports/forest_admin_datasource_active_record/coverage.json:simplecov
${{github.workspace}}/reports/forest_admin_datasource_toolkit/coverage.json:simplecov
# ${{github.workspace}}/reports/forest_admin_rails/coverage.json:simplecov
debug: true

Expand Down
8 changes: 8 additions & 0 deletions .releaserc.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,13 +19,18 @@ module.exports = {
'sed -i \'s/VERSION = ".*"/VERSION = "${nextRelease.version}"/g\' lib/agent_ruby/version.rb; ' +
'sed -i \'s/"version": ".*"/"version": "${nextRelease.version}"/g\' package.json; ' +
'sed -i \'s/VERSION = ".*"/VERSION = "${nextRelease.version}"/g\' packages/forest_admin_agent/lib/forest_admin_agent/version.rb; ' +
'sed -i \'s/LIANA_VERSION = ".*"/LIANA_VERSION = "${nextRelease.version}"/g\' packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/schema_emitter.rb; ' +
'sed -i \'s/VERSION = ".*"/VERSION = "${nextRelease.version}"/g\' packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/version.rb; '+
'sed -i \'s/VERSION = ".*"/VERSION = "${nextRelease.version}"/g\' packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit/version.rb; '+
'sed -i \'s/VERSION = ".*"/VERSION = "${nextRelease.version}"/g\' packages/forest_admin_rails/lib/forest_admin_rails/version.rb; ',
successCmd:
'mkdir -p $HOME/.gem '+
'touch $HOME/.gem/credentials '+
'chmod 0600 $HOME/.gem/credentials '+
'printf -- "---\n:rubygems_api_key: ${env.GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials '+
'( cd packages/forest_admin_agent && gem build && gem push forest_admin_agent-${nextRelease.version}.gem )' +
'( cd packages/forest_admin_datasource_toolkit && gem build && gem push forest_admin_datasource_toolkit-${nextRelease.version}.gem )' +
'( cd packages/forest_admin_datasource_toolkit && gem build && gem push forest_admin_datasource_toolkit-${nextRelease.version}.gem )' +
'( cd packages/forest_admin_rails && gem build && gem push forest_admin_rails-${nextRelease.version}.gem )' ,
},
],
Expand All@@ -36,6 +41,9 @@ module.exports = {
'CHANGELOG.md',
'lib/agent_ruby/version.rb',
'packages/forest_admin_agent/lib/forest_admin_agent/version.rb',
'packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/schema_emitter.rb',
'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/version.rb',
'packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit/version.rb',
'packages/forest_admin_rails/lib/forest_admin_rails/version.rb',
'package.json'
],
Expand Down
85 changes: 76 additions & 9 deletions .rubocop.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,18 +5,25 @@ require:
AllCops:
TargetRubyVersion: 3.0
NewCops: enable
Exclude:
- 'packages/forest_admin_datasource_active_record/spec/dummy/**/*'
- 'node_modules/semantic-release-rubygem/**/*'

Gemspec/OrderedDependencies:
Exclude:
- 'packages/forest_admin_agent/forest_admin_agent.gemspec'
- 'packages/forest_admin_rails/forest_admin_rails.gemspec'
- 'forest_admin_rails.gemspec'
- 'packages/forest_admin_datasource_toolkit/forest_admin_datasource_toolkit.gemspec'
- 'packages/forest_admin_datasource_active_record/forest_admin_datasource_active_record.gemspec'

# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
Lint/PercentStringArray:
Exclude:
- 'packages/forest_admin_agent/forest_admin_agent.gemspec'
- 'packages/forest_admin_rails/forest_admin_rails.gemspec'
- 'packages/forest_admin_datasource_toolkit/forest_admin_datasource_toolkit.gemspec'
- 'packages/forest_admin_datasource_active_record/forest_admin_datasource_active_record.gemspec'

# Offense count: 1
# Configuration parameters: AllowComments.
Expand All@@ -29,20 +36,22 @@ Metrics/AbcSize:
- 'packages/forest_admin_agent/lib/forest_admin_agent/auth/auth_manager.rb'
- 'packages/forest_admin_agent/lib/forest_admin_agent/auth/oauth2/forest_provider.rb'
- 'packages/forest_admin_agent/lib/forest_admin_agent/auth/oidc_client_manager.rb'
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/validation.rb'
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/collection.rb'
- 'packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_field.rb'
- 'packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/schema_emitter.rb'

Metrics/CyclomaticComplexity:
Exclude:
- 'packages/forest_admin_agent/lib/forest_admin_agent/auth/oauth2/forest_provider.rb'

Metrics/MethodLength:
Max: 20
Exclude:
- 'packages/forest_admin_agent/lib/forest_admin_agent/auth/oauth2/forest_provider.rb'
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/validation.rb'

Style/BlockComments:
Exclude:
- 'packages/forest_admin_agent/spec/spec_helper.rb'
- 'packages/forest_admin_rails/spec/spec_helper.rb'
- 'packages/forest_admin_datasource_toolkit/spec/spec_helper.rb'
- 'packages/forest_admin_datasource_active_record/spec/spec_helper.rb'

# Offense count: 3
# Configuration parameters: AllowedConstants.
Expand All@@ -64,7 +73,10 @@ Style/MutableConstant:
Exclude:
- 'lib/agent_ruby/version.rb'
- 'packages/forest_admin_agent/lib/forest_admin_agent/version.rb'
- 'packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/schema_emitter.rb'
- 'packages/forest_admin_rails/lib/forest_admin_rails/version.rb'
- 'packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit/version.rb'
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/version.rb'

# Offense count: 38
# This cop supports safe autocorrection (--autocorrect).
Expand All@@ -86,6 +98,7 @@ Style/StringLiterals:
- 'packages/forest_admin_agent/lib/forest_admin_agent/version.rb'
- 'packages/forest_admin_agent/spec/forest_admin_agent_spec.rb'
- 'packages/forest_admin_agent/spec/spec_helper.rb'
- 'packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/schema_emitter.rb'
- 'packages/forest_admin_rails/forest_admin_rails.gemspec'
- 'packages/forest_admin_rails/Gemfile'
- 'packages/forest_admin_rails/Rakefile'
Expand All@@ -95,6 +108,20 @@ Style/StringLiterals:
- 'packages/forest_admin_rails/lib/forest_admin_rails/version.rb'
- 'packages/forest_admin_rails/spec/rails_helper.rb'
- 'packages/forest_admin_rails/spec/spec_helper.rb'
- 'packages/forest_admin_datasource_toolkit/forest_admin_datasource_toolkit.gemspec'
- 'packages/forest_admin_datasource_toolkit/Gemfile'
- 'packages/forest_admin_datasource_toolkit/Rakefile'
- 'packages/forest_admin_datasource_toolkit/bin/console'
- 'packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit.rb'
- 'packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit/version.rb'
- 'packages/forest_admin_datasource_toolkit/spec/spec_helper.rb'
- 'packages/forest_admin_datasource_active_record/forest_admin_datasource_active_record.gemspec'
- 'packages/forest_admin_datasource_active_record/Gemfile'
- 'packages/forest_admin_datasource_active_record/Rakefile'
- 'packages/forest_admin_datasource_active_record/bin/console'
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record.rb'
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/version.rb'
- 'packages/forest_admin_datasource_active_record/spec/spec_helper.rb'

# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Expand All@@ -104,6 +131,10 @@ Style/WordArray:
EnforcedStyle: percent
MinSize: 3

Style/SymbolArray:
Exclude:
- 'packages/forest_admin_agent/spec/lib/forest_admin_agent/utils/schema/generator_field_many_to_many_spec.rb'

Style/StringLiteralsInInterpolation:
Enabled: true
EnforcedStyle: double_quotes
Expand All@@ -112,14 +143,50 @@ Style/RedundantConstantBase:
Exclude:
- 'packages/forest_admin_rails/spec/rails_helper.rb'

Layout/LineLength:
Max: 120
Naming/PredicateName:
Exclude:
- 'packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit/collection.rb'

Metrics/ParameterLists:
Exclude:
- 'packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit/schema/relations/many_to_many_schema.rb'
- 'packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit/schema/column_schema.rb'

Metrics/ModuleLength:
CountAsOne: [ 'array', 'hash', 'method_call' ]

Metrics/MethodLength:
CountAsOne: ['array', 'hash', 'method_call']
Max: 20
Exclude:
- 'packages/forest_admin_agent/lib/forest_admin_agent/auth/oauth2/forest_provider.rb'
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/validation.rb'
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/collection.rb'
- 'packages/forest_admin_datasource_active_record/spec/dummy/**/*'
- 'packages/forest_admin_datasource_toolkit/lib/forest_admin_datasource_toolkit/collection.rb'

Metrics/BlockLength:
Exclude:
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/collection.rb'

Metrics/PerceivedComplexity:
Exclude:
- 'packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/validation.rb'

Metrics/ClassLength:
Exclude:
- 'packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_field.rb'

RSpec/ExampleLength:
CountAsOne: [ 'array', 'hash', 'method_call' ]
Max: 20


RSpec/MultipleExpectations:
Max: 5
Max: 6

Layout/LineLength:
Max: 120

RSpec/MultipleMemoizedHelpers:
Max: 10
9 changes: 6 additions & 3 deletions packages/forest_admin_agent/Gemfile
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,8 +2,11 @@ source "https://rubygems.org"

gemspec

gem 'forest_admin_datasource_toolkit', path: '../forest_admin_datasource_toolkit'

group :development, :test do
gem "rspec", "~> 3.0"
gem 'simplecov', "~> 0.22", require: false
gem 'simplecov_json_formatter', "~> 0.1.4"
gem 'rspec', '~> 3.0'
gem 'simplecov', '~> 0.22', require: false
gem 'simplecov-html', '~> 0.12.3'
gem 'simplecov_json_formatter', '~> 0.1.4'
end
1 change: 1 addition & 0 deletions packages/forest_admin_agent/forest_admin
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
# Logfile created on 2023-09-27 15:44:52 +0200 by logger.rb/v1.5.3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
module ForestAdminAgent
module Utils
module Schema
class GeneratorCollection
include ForestAdminDatasourceToolkit::Utils

def self.build_schema(collection)
{
actions: {},
fields: build_fields(collection),
icon: nil,
integration: nil,
isReadOnly: collection.fields.all? { |_k, field| field.type != 'Column' || field.is_read_only },
isSearchable: true,
isVirtual: false,
name: collection.name,
onlyForRelationships: false,
paginationType: 'page',
segments: {}
}
end

def self.build_fields(collection)
fields = collection.fields.select do |name, _field|
!ForestAdminDatasourceToolkit::Utils::Schema.foreign_key?(collection, name) ||
ForestAdminDatasourceToolkit::Utils::Schema.primary_key?(collection, name)
end

fields.map { |name, _field| GeneratorField.build_schema(collection, name) }
.sort_by { |v| v[:field] }
end
end
end
end
end
Loading