activerecord-dbt 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +213 -72
  3. data/lib/active_record/dbt/column/{test.rb → data_test.rb} +16 -16
  4. data/lib/active_record/dbt/column/{testable/accepted_values_testable.rb → data_testable/accepted_values_data_testable.rb} +2 -2
  5. data/lib/active_record/dbt/column/{testable/not_null_testable.rb → data_testable/not_null_data_testable.rb} +9 -3
  6. data/lib/active_record/dbt/column/{testable/relationships_testable.rb → data_testable/relationships_data_testable.rb} +3 -3
  7. data/lib/active_record/dbt/column/{testable/unique_testable.rb → data_testable/unique_data_testable.rb} +2 -2
  8. data/lib/active_record/dbt/column/{column.rb → yml.rb} +9 -20
  9. data/lib/active_record/dbt/config.rb +2 -30
  10. data/lib/active_record/dbt/configuration/i18n_configuration.rb +14 -0
  11. data/lib/active_record/dbt/configuration/source.rb +40 -0
  12. data/lib/active_record/dbt/data_type/mapper.rb +81 -14
  13. data/lib/active_record/dbt/dbt_package/dbt_utils/table/{testable/unique_combination_of_columns_testable.rb → data_testable/unique_combination_of_columns_data_testable.rb} +2 -2
  14. data/lib/active_record/dbt/dbt_package/dbterd/column/{testable → data_testable}/relationships_meta_relationship_type.rb +4 -5
  15. data/lib/active_record/dbt/factory/columns/yml_factory.rb +33 -0
  16. data/lib/active_record/dbt/factory/model/staging/yml_factory.rb +24 -0
  17. data/lib/active_record/dbt/factory/source/yml_factory.rb +17 -0
  18. data/lib/active_record/dbt/factory/table/yml_factory.rb +18 -0
  19. data/lib/active_record/dbt/factory/tables/yml_factory.rb +17 -0
  20. data/lib/active_record/dbt/i18n_wrapper/translate.rb +34 -0
  21. data/lib/active_record/dbt/model/staging/base.rb +1 -1
  22. data/lib/active_record/dbt/model/staging/yml.rb +10 -6
  23. data/lib/active_record/dbt/seed/enum/base.rb +48 -0
  24. data/lib/active_record/dbt/seed/enum/csv.rb +85 -0
  25. data/lib/active_record/dbt/seed/enum/yml.rb +128 -0
  26. data/lib/active_record/dbt/source/yml.rb +13 -5
  27. data/lib/active_record/dbt/table/{test.rb → data_test.rb} +3 -3
  28. data/lib/active_record/dbt/table/yml.rb +7 -10
  29. data/lib/active_record/dbt/version.rb +1 -1
  30. data/lib/generators/active_record/dbt/config/templates/source_config.yml.tt +5 -2
  31. data/lib/generators/active_record/dbt/enum/USAGE +9 -0
  32. data/lib/generators/active_record/dbt/enum/enum_generator.rb +31 -0
  33. data/lib/generators/active_record/dbt/initializer/templates/dbt.rb +9 -7
  34. data/lib/generators/active_record/dbt/source/USAGE +1 -1
  35. data/lib/generators/active_record/dbt/source/source_generator.rb +3 -4
  36. data/lib/generators/active_record/dbt/staging_model/USAGE +2 -2
  37. data/lib/generators/active_record/dbt/staging_model/staging_model_generator.rb +2 -2
  38. metadata +24 -21
  39. data/lib/active_record/dbt/data_type/dwh_platform/apache_spark.rb +0 -27
  40. data/lib/active_record/dbt/data_type/dwh_platform/bigquery.rb +0 -26
  41. data/lib/active_record/dbt/data_type/dwh_platform/postgre_sql.rb +0 -27
  42. data/lib/active_record/dbt/data_type/dwh_platform/redshift.rb +0 -27
  43. data/lib/active_record/dbt/data_type/dwh_platform/snowflake.rb +0 -27
  44. data/lib/active_record/dbt/factory/columns_factory.rb +0 -31
  45. data/lib/active_record/dbt/factory/model/staging_factory.rb +0 -22
  46. data/lib/active_record/dbt/factory/source_factory.rb +0 -16
  47. data/lib/active_record/dbt/factory/table_factory.rb +0 -16
  48. data/lib/active_record/dbt/factory/tables_factory.rb +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c7948bb8cc4c14d07c3fca2855b20957a2871c54dd67149fb178029fa93f6f09
4
- data.tar.gz: c8146bfcd3ffa762f16889a79750807ab1e72986e49f34069ac043fe8c89d5f0
3
+ metadata.gz: 723d33af77e2e665a7baa13aeebdc892ebca6fad469622494591752e59ff3a4f
4
+ data.tar.gz: f3ced61ce633c40e8464fd5280f200b062d073f96809fae300de2592c15a10bd
5
5
  SHA512:
6
- metadata.gz: a2d3ce1aa15cafbd0bb6f282d5faa64f6319d669a38a8dde20b04af3cccf12a21e16fa22cf6f7b87b245dd094bad296de2dd22bd027db047b2ed845cc7de2b8a
7
- data.tar.gz: 6097b5f0b25324679e012d4a16833afba17514f2ebb82eabe778ae510bc8f283c280dd3d6916b2a3220092c63c7827c56b4b0660f14caa6f1b210a496dff7cdc
6
+ metadata.gz: 38293faab98d461a080d9699401ac8c5fb8f59c8f1f19cda3a8ed082fd0ebc8041aaf13a9a1ecf57e484fd3f66c976404cc1c3697f7b97d8c4ae9106f942f165
7
+ data.tar.gz: f966416f03dc58ba525488afac7f13df368607f1b57b3b6c6cf206a5ed56cf7757a52d20fab68f9463f9ab754f72eb622667b42e588abb02aa3a255d4e6c4c32
data/README.md CHANGED
@@ -58,6 +58,7 @@ dwh_platform | Specify the data warehouse platform to which dbt connects. The de
58
58
  data_sync_delayed | Indicates whether there is a data delay. If set to `true`, `severity: warn` is applied to the `relationships` test. The default is `false`.
59
59
  logger | The destination for log output. The default is `Logger.new('./log/active_record_dbt.log')`.
60
60
  used_dbt_package_names | An array of `dbt` package names to use.
61
+ locale | I18n locale. The default is `I18n.locale`.
61
62
 
62
63
  List of platforms that can currently be set with `dwh_platform`.
63
64
 
@@ -83,16 +84,18 @@ Adjust the settings according to your environment.
83
84
  ```ruby
84
85
  # frozen_string_literal: true
85
86
 
86
- require 'active_record/dbt'
87
-
88
- ActiveRecord::Dbt.configure do |c|
89
- c.config_directory_path = 'lib/dbt'
90
- c.export_directory_path = 'doc/dbt'
91
- c.data_sync_delayed = false
92
- c.used_dbt_package_names = [
93
- 'dbt-labs/dbt_utils',
94
- 'datnguye/dbterd'
95
- ]
87
+ if Rails.env.development?
88
+ require 'active_record/dbt'
89
+
90
+ ActiveRecord::Dbt.configure do |c|
91
+ c.config_directory_path = 'lib/dbt'
92
+ c.export_directory_path = 'doc/dbt'
93
+ c.data_sync_delayed = false
94
+ c.used_dbt_package_names = [
95
+ 'dbt-labs/dbt_utils',
96
+ 'datnguye/dbterd'
97
+ ]
98
+ end
96
99
  end
97
100
 
98
101
  ```
@@ -109,8 +112,8 @@ This will create the following files.
109
112
 
110
113
  File | Description
111
114
  --------- | ---------
112
- `#{config_directory_path}/source_config.yml` | Used to generate `#{export_directory_path}/src_#{source_name}.yml`.
113
- `#{config_directory_path}/staging_model.sql.tt` | Used to generate `#{export_directory_path}/stg_#{source_name}__#{table_name}.sql`.
115
+ `#{config_directory_path}/source_config.yml` | Used to generate `#{export_directory_path}/models/sources/#{source_name}/src_#{source_name}.yml`.
116
+ `#{config_directory_path}/staging_model.sql.tt` | Used to generate `#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.sql`.
114
117
 
115
118
  ### Generate dbt Source File
116
119
 
@@ -157,7 +160,7 @@ table_overrides:
157
160
  period: day
158
161
  columns:
159
162
  created_at:
160
- tests:
163
+ data_tests:
161
164
  - not_null:
162
165
  where: 'id != 1'
163
166
 
@@ -165,10 +168,10 @@ table_overrides:
165
168
 
166
169
  ##### defaults
167
170
 
168
- Set default values for the `name` and `description` of `tables`.
171
+ Set the default value for the `description`(`logical_name`, `description`) of `tables`.
169
172
 
170
- In `logical_name` and `description` of `table_descriptions`, you can refer to the table name with `{{ table_name }}`.
171
- In the `description` of `columns`, you can refer to the table name with `{{ table_name }}` and the column name with `{{ column_name }}`.
173
+ In the `logical_name` and `description` of `table_descriptions`, you can refer to the table name with `{{ table_name }}`.
174
+ In the `description` of `table_descriptions.columns`, you can refer to the table name with `{{ table_name }}` and the column name with `{{ column_name }}`.
172
175
 
173
176
  Example:
174
177
 
@@ -250,7 +253,7 @@ table_overrides:
250
253
  period: day
251
254
  columns:
252
255
  created_at:
253
- tests:
256
+ data_tests:
254
257
  - not_null:
255
258
  where: 'id != 1'
256
259
 
@@ -281,7 +284,7 @@ table_descriptions:
281
284
 
282
285
  ```
283
286
 
284
- #### Generate `#{export_directory_path}/src_#{source_name}.yml`
287
+ #### Generate `#{export_directory_path}/models/sources/#{source_name}/src_#{source_name}.yml`
285
288
 
286
289
  Generate a source file for dbt:
287
290
 
@@ -289,7 +292,7 @@ Generate a source file for dbt:
289
292
  $ bin/rails generate active_record:dbt:source
290
293
  ```
291
294
 
292
- Generate `#{export_directory_path}/src_#{source_name}.yml`.
295
+ Generate `#{export_directory_path}/models/sources/#{source_name}/src_#{source_name}.yml`.
293
296
 
294
297
  ##### Example:
295
298
 
@@ -297,6 +300,14 @@ Generate `#{export_directory_path}/src_#{source_name}.yml`.
297
300
  >
298
301
  > The output will be as shown below. It is recommended to indent the YAML file with a tool of your choice.
299
302
 
303
+ > [!WARNING]
304
+ >
305
+ > If you are using a version of dbt lower than v1.8, replace `tests:` with `data_tests:` in the generated file.
306
+ >
307
+ > [Add data tests to your DAG | dbt Developer Hub](https://docs.getdbt.com/docs/build/data-tests#new-data_tests-syntax)
308
+ >
309
+ >> Data tests were historically called "tests" in dbt as the only form of testing available. With the introduction of unit tests in v1.8, the key was renamed from `tests:` to `data_tests:`.
310
+
300
311
  ```yaml
301
312
  ---
302
313
  version: 2
@@ -317,7 +328,7 @@ sources:
317
328
  - name: key
318
329
  description: Key
319
330
  data_type: string
320
- tests:
331
+ data_tests:
321
332
  - unique
322
333
  - not_null
323
334
  - name: value
@@ -326,12 +337,12 @@ sources:
326
337
  - name: created_at
327
338
  description: Created At
328
339
  data_type: datetime
329
- tests:
340
+ data_tests:
330
341
  - not_null
331
342
  - name: updated_at
332
343
  description: Updated At
333
344
  data_type: datetime
334
- tests:
345
+ data_tests:
335
346
  - not_null
336
347
  - name: companies
337
348
  description: Write a logical_name of the 'companies' table.
@@ -339,13 +350,13 @@ sources:
339
350
  - name: id
340
351
  description: id
341
352
  data_type: int64
342
- tests:
353
+ data_tests:
343
354
  - unique
344
355
  - not_null
345
356
  - name: name
346
357
  description: Write a description of the 'companies.name' column.
347
358
  data_type: string
348
- tests:
359
+ data_tests:
349
360
  - not_null
350
361
  - name: establishment_date
351
362
  description: Write a description of the 'companies.establishment_date' column.
@@ -356,7 +367,7 @@ sources:
356
367
  - name: published
357
368
  description: Write a description of the 'companies.published' column.
358
369
  data_type: bool
359
- tests:
370
+ data_tests:
360
371
  - not_null
361
372
  - accepted_values:
362
373
  values:
@@ -366,12 +377,12 @@ sources:
366
377
  - name: created_at
367
378
  description: Created At
368
379
  data_type: datetime
369
- tests:
380
+ data_tests:
370
381
  - not_null
371
382
  - name: updated_at
372
383
  description: Updated At
373
384
  data_type: datetime
374
- tests:
385
+ data_tests:
375
386
  - not_null
376
387
  - name: posts
377
388
  description: Post
@@ -379,13 +390,13 @@ sources:
379
390
  - name: id
380
391
  description: ID
381
392
  data_type: int64
382
- tests:
393
+ data_tests:
383
394
  - unique
384
395
  - not_null
385
396
  - name: user_id
386
397
  description: User
387
398
  data_type: int64
388
- tests:
399
+ data_tests:
389
400
  - not_null
390
401
  - relationships:
391
402
  to: source('dummy', 'users')
@@ -401,17 +412,17 @@ sources:
401
412
  - name: created_at
402
413
  description: Post Created At
403
414
  data_type: datetime
404
- tests:
415
+ data_tests:
405
416
  - not_null
406
417
  - name: updated_at
407
418
  description: Post Updated At
408
419
  data_type: datetime
409
- tests:
420
+ data_tests:
410
421
  - not_null
411
422
  - name: status
412
423
  description: Write a description of the 'posts.status' column.
413
424
  data_type: int64
414
- tests:
425
+ data_tests:
415
426
  - accepted_values:
416
427
  values:
417
428
  - 0
@@ -420,7 +431,7 @@ sources:
420
431
  quote: false
421
432
  - name: posts_tags
422
433
  description: Write a logical_name of the 'posts_tags' table.
423
- tests:
434
+ data_tests:
424
435
  - dbt_utils.unique_combination_of_columns:
425
436
  combination_of_columns:
426
437
  - post_id
@@ -429,7 +440,7 @@ sources:
429
440
  - name: post_id
430
441
  description: post_id
431
442
  data_type: int64
432
- tests:
443
+ data_tests:
433
444
  - not_null
434
445
  - relationships:
435
446
  to: source('dummy', 'posts')
@@ -442,7 +453,7 @@ sources:
442
453
  - name: tag_id
443
454
  description: tag_id
444
455
  data_type: int64
445
- tests:
456
+ data_tests:
446
457
  - not_null
447
458
  - relationships:
448
459
  to: source('dummy', 'tags')
@@ -458,13 +469,13 @@ sources:
458
469
  - name: id
459
470
  description: id
460
471
  data_type: int64
461
- tests:
472
+ data_tests:
462
473
  - unique
463
474
  - not_null
464
475
  - name: user_id
465
476
  description: user_id
466
477
  data_type: int64
467
- tests:
478
+ data_tests:
468
479
  - unique
469
480
  - not_null
470
481
  - relationships:
@@ -475,26 +486,26 @@ sources:
475
486
  - name: first_name
476
487
  description: Write a description of the 'profiles.first_name' column.
477
488
  data_type: string
478
- tests:
489
+ data_tests:
479
490
  - not_null
480
491
  - name: last_name
481
492
  description: Write a description of the 'profiles.last_name' column.
482
493
  data_type: string
483
- tests:
494
+ data_tests:
484
495
  - not_null
485
496
  - name: created_at
486
497
  description: Created At
487
498
  data_type: datetime
488
- tests:
499
+ data_tests:
489
500
  - not_null
490
501
  - name: updated_at
491
502
  description: Updated At
492
503
  data_type: datetime
493
- tests:
504
+ data_tests:
494
505
  - not_null
495
506
  - name: relationships
496
507
  description: Write a logical_name of the 'relationships' table.
497
- tests:
508
+ data_tests:
498
509
  - dbt_utils.unique_combination_of_columns:
499
510
  combination_of_columns:
500
511
  - follower_id
@@ -503,13 +514,13 @@ sources:
503
514
  - name: id
504
515
  description: id
505
516
  data_type: int64
506
- tests:
517
+ data_tests:
507
518
  - unique
508
519
  - not_null
509
520
  - name: follower_id
510
521
  description: follower_id
511
522
  data_type: int64
512
- tests:
523
+ data_tests:
513
524
  - not_null
514
525
  - relationships:
515
526
  to: source('dummy', 'users')
@@ -519,7 +530,7 @@ sources:
519
530
  - name: followed_id
520
531
  description: followed_id
521
532
  data_type: int64
522
- tests:
533
+ data_tests:
523
534
  - not_null
524
535
  - relationships:
525
536
  to: source('dummy', 'users')
@@ -529,12 +540,12 @@ sources:
529
540
  - name: created_at
530
541
  description: Created At
531
542
  data_type: datetime
532
- tests:
543
+ data_tests:
533
544
  - not_null
534
545
  - name: updated_at
535
546
  description: Updated At
536
547
  data_type: datetime
537
- tests:
548
+ data_tests:
538
549
  - not_null
539
550
  - name: schema_migrations
540
551
  description: |-
@@ -545,7 +556,7 @@ sources:
545
556
  - name: version
546
557
  description: The version number of the migration.
547
558
  data_type: string
548
- tests:
559
+ data_tests:
549
560
  - unique
550
561
  - not_null
551
562
  - name: tags
@@ -554,28 +565,28 @@ sources:
554
565
  - name: id
555
566
  description: id
556
567
  data_type: int64
557
- tests:
568
+ data_tests:
558
569
  - unique
559
570
  - not_null
560
571
  - name: name
561
572
  description: Write a description of the 'tags.name' column.
562
573
  data_type: string
563
- tests:
574
+ data_tests:
564
575
  - unique
565
576
  - not_null
566
577
  - name: created_at
567
578
  description: Created At
568
579
  data_type: datetime
569
- tests:
580
+ data_tests:
570
581
  - not_null
571
582
  - name: updated_at
572
583
  description: Updated At
573
584
  data_type: datetime
574
- tests:
585
+ data_tests:
575
586
  - not_null
576
587
  - name: user_tags
577
588
  description: Write a logical_name of the 'user_tags' table.
578
- tests:
589
+ data_tests:
579
590
  - dbt_utils.unique_combination_of_columns:
580
591
  combination_of_columns:
581
592
  - user_id
@@ -584,13 +595,13 @@ sources:
584
595
  - name: id
585
596
  description: id
586
597
  data_type: int64
587
- tests:
598
+ data_tests:
588
599
  - unique
589
600
  - not_null
590
601
  - name: user_id
591
602
  description: user_id
592
603
  data_type: int64
593
- tests:
604
+ data_tests:
594
605
  - not_null
595
606
  - relationships:
596
607
  to: source('dummy', 'users')
@@ -600,7 +611,7 @@ sources:
600
611
  - name: tag_id
601
612
  description: tag_id
602
613
  data_type: int64
603
- tests:
614
+ data_tests:
604
615
  - not_null
605
616
  - relationships:
606
617
  to: source('dummy', 'tags')
@@ -610,12 +621,12 @@ sources:
610
621
  - name: created_at
611
622
  description: Created At
612
623
  data_type: datetime
613
- tests:
624
+ data_tests:
614
625
  - not_null
615
626
  - name: updated_at
616
627
  description: Updated At
617
628
  data_type: datetime
618
- tests:
629
+ data_tests:
619
630
  - not_null
620
631
  - name: users
621
632
  description: User
@@ -631,24 +642,24 @@ sources:
631
642
  - name: id
632
643
  description: ID
633
644
  data_type: int64
634
- tests:
645
+ data_tests:
635
646
  - unique
636
647
  - not_null
637
648
  - name: created_at
638
649
  description: User Created At
639
650
  data_type: datetime
640
- tests:
651
+ data_tests:
641
652
  - not_null:
642
653
  where: id != 1
643
654
  - name: updated_at
644
655
  description: User Updated At
645
656
  data_type: datetime
646
- tests:
657
+ data_tests:
647
658
  - not_null
648
659
  - name: company_id
649
660
  description: company_id
650
661
  data_type: int64
651
- tests:
662
+ data_tests:
652
663
  - relationships:
653
664
  to: source('dummy', 'companies')
654
665
  field: id
@@ -747,8 +758,8 @@ Generate staging model files for dbt that reference the specified `TABLE_NAME`.
747
758
 
748
759
  File | Description
749
760
  --------- | ---------
750
- `#{export_directory_path}/stg_#{source_name}__#{table_name}.sql` | Staging model file for dbt.
751
- `#{export_directory_path}/stg_#{source_name}__#{table_name}.yml` | Staging model documentation file for dbt.
761
+ `#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.sql` | Staging model file for dbt.
762
+ `#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.yml` | Staging model documentation file for dbt.
752
763
 
753
764
  Example:
754
765
 
@@ -756,7 +767,7 @@ Example:
756
767
  $ bin/rails generate active_record:dbt:staging_model profiles
757
768
  ```
758
769
 
759
- ##### Generate `#{export_directory_path}/stg_#{source_name}__#{table_name}.sql`
770
+ ##### Generate `#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.sql`
760
771
 
761
772
  Example:
762
773
 
@@ -827,10 +838,22 @@ from final
827
838
 
828
839
  ```
829
840
 
830
- ##### Generate `#{export_directory_path}/stg_#{source_name}__#{table_name}.yml`
841
+ ##### Generate `#{export_directory_path}/models/staging/#{source_name}/stg_#{source_name}__#{table_name}.yml`
831
842
 
832
843
  Example:
833
844
 
845
+ > [!NOTE]
846
+ >
847
+ > The output will be as shown below. It is recommended to indent the YAML file with a tool of your choice.
848
+
849
+ > [!WARNING]
850
+ >
851
+ > If you are using a version of dbt lower than v1.8, replace `tests:` with `data_tests:` in the generated file.
852
+ >
853
+ > [Add data tests to your DAG | dbt Developer Hub](https://docs.getdbt.com/docs/build/data-tests#new-data_tests-syntax)
854
+ >
855
+ >> Data tests were historically called "tests" in dbt as the only form of testing available. With the introduction of unit tests in v1.8, the key was renamed from `tests:` to `data_tests:`.
856
+
834
857
  ```yaml
835
858
  ---
836
859
  version: 2
@@ -841,7 +864,7 @@ models:
841
864
  - name: profile_id
842
865
  description: profile_id
843
866
  data_type: int64
844
- tests:
867
+ data_tests:
845
868
  - unique
846
869
  - not_null
847
870
  - relationships:
@@ -852,7 +875,7 @@ models:
852
875
  - name: user_id
853
876
  description: user_id
854
877
  data_type: int64
855
- tests:
878
+ data_tests:
856
879
  - unique
857
880
  - not_null
858
881
  - relationships:
@@ -863,26 +886,144 @@ models:
863
886
  - name: first_name
864
887
  description: Write a description of the 'profiles.first_name' column.
865
888
  data_type: string
866
- tests:
889
+ data_tests:
867
890
  - not_null
868
891
  - name: last_name
869
892
  description: Write a description of the 'profiles.last_name' column.
870
893
  data_type: string
871
- tests:
894
+ data_tests:
872
895
  - not_null
873
896
  - name: created_at
874
897
  description: Created At
875
898
  data_type: datetime
876
- tests:
899
+ data_tests:
877
900
  - not_null
878
901
  - name: updated_at
879
902
  description: Updated At
880
903
  data_type: datetime
881
- tests:
904
+ data_tests:
882
905
  - not_null
883
906
 
884
907
  ```
885
908
 
909
+ ### Generated dbt Seed Files
910
+
911
+ #### dbt Seed Configuration
912
+
913
+ In the `#{config_directory_path}/source_config.yml` file, describe the properties you want to set for the seed enum.
914
+ You can configure `defaults` in this file.
915
+
916
+ ##### defaults
917
+
918
+ Set the default value for the `description` of the `seeds` enum.
919
+
920
+ In the `description` of `seed_descriptions.enum`, you can refer to the source name with `{{ source_name }}`, the translated table name with `{{ translated_table_name }}`, and the translated column name with `{{ translated_attribute_name }}`.
921
+
922
+ Example:
923
+
924
+ ```yml
925
+ defaults:
926
+ seed_descriptions:
927
+ enum:
928
+ description: "{{ source_name }} {{ translated_table_name }} {{ translated_attribute_name }} enum"
929
+
930
+ ```
931
+
932
+ If nothing is set, it defaults to the following:
933
+
934
+ ```yml
935
+ defaults:
936
+ seed_descriptions:
937
+ enum:
938
+ description: "{{ source_name }} {{ translated_table_name }} {{ translated_attribute_name }} enum"
939
+
940
+ ```
941
+
942
+ #### Generate dbt Seed Enum Files
943
+
944
+ Generate seed enum files for dbt:
945
+
946
+ ```bash
947
+ $ bin/rails generate active_record:dbt:enum TABLE_NAME ENUM_COLUMN_NAME
948
+ ```
949
+
950
+ Generate seed enum files for dbt from the specified `TABLE_NAME` and `ENUM_COLUMN_NAME`.
951
+
952
+ File | Description
953
+ --------- | ---------
954
+ `#{export_directory_path}/seeds/#{source_name}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.csv` | Seed enum file for dbt.
955
+ `#{export_directory_path}/seeds/#{source_name}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.yml` | Seed enum documentation file for dbt.
956
+
957
+ Example:
958
+
959
+ ```bash
960
+ $ bin/rails generate active_record:dbt:enum posts status
961
+ ```
962
+
963
+ ##### Generate `#{export_directory_path}/seeds/#{source_name}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.csv`
964
+
965
+ Example:
966
+
967
+ ```csv
968
+ status_before_type_of_cast,status_key,status_en,status_ja
969
+ 0,draft,Draft,下書き
970
+ 1,published,Published,公開
971
+ 2,deleted,Deleted,削除
972
+
973
+ ```
974
+
975
+ ##### Generate `#{export_directory_path}/seeds/#{source_name}/seed_#{source_name}__#{table_name_singularize}_enum_#{enum_pluralized}.yml`
976
+
977
+ Example:
978
+
979
+ > [!NOTE]
980
+ >
981
+ > The output will be as shown below. It is recommended to indent the YAML file with a tool of your choice.
982
+
983
+ > [!WARNING]
984
+ >
985
+ > If you are using a version of dbt lower than v1.8, replace `tests:` with `data_tests:` in the generated file.
986
+ >
987
+ > [Add data tests to your DAG | dbt Developer Hub](https://docs.getdbt.com/docs/build/data-tests#new-data_tests-syntax)
988
+ >
989
+ >> Data tests were historically called "tests" in dbt as the only form of testing available. With the introduction of unit tests in v1.8, the key was renamed from `tests:` to `data_tests:`.
990
+
991
+ ```yaml
992
+ ---
993
+ version: 2
994
+ seeds:
995
+ - name: seed_dummy__post_enum_statuses
996
+ description: dummy Post Status enum
997
+ config:
998
+ column_types:
999
+ status_before_type_of_cast: int64
1000
+ status_key: string
1001
+ status_en: string
1002
+ status_ja: string
1003
+ columns:
1004
+ - name: status_before_type_of_cast
1005
+ description: Status
1006
+ data_tests:
1007
+ - unique
1008
+ - not_null
1009
+ - name: status_key
1010
+ description: Status(key)
1011
+ data_tests:
1012
+ - unique
1013
+ - not_null
1014
+ - name: status_en
1015
+ description: Status(en)
1016
+ data_tests:
1017
+ - unique
1018
+ - not_null
1019
+ - name: status_ja
1020
+ description: Status(ja)
1021
+ data_tests:
1022
+ - unique
1023
+ - not_null
1024
+
1025
+ ```
1026
+
886
1027
  ## Contributing
887
1028
 
888
1029
  Contribution directions go here.