quickdbd-cli 0.6.0__tar.gz → 0.6.1__tar.gz
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.
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/NOTICE +1 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/PKG-INFO +6 -6
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/README.md +5 -5
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/pyproject.toml +1 -1
- quickdbd_cli-0.6.1/src/quickdbd_cli/__init__.py +1 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/style.css +2 -2
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/viewer.js +1 -1
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_convert.py +7 -3
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_gallery.py +19 -0
- quickdbd_cli-0.6.1/tests/test_gallery_hook.py +30 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_home_hook.py +20 -1
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_viewer_contract.py +14 -4
- quickdbd_cli-0.6.0/src/quickdbd_cli/__init__.py +0 -1
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/.gitignore +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/LICENSE +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/examples/quickdbd-sample.txt +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/examples/synthetic/finance.txt +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/examples/synthetic/hr.txt +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/examples/synthetic/inventory.txt +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/examples/synthetic/marketing.txt +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/examples/synthetic/qdbd.layout.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/examples/synthetic/sales.txt +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/scripts/build_gallery.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/scripts/gen_font_metrics.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/scripts/gen_schema.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/scripts/gen_thumbnails.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/scripts/import_dbml_corpus.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/scripts/release.sh +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/__main__.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/agent.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/Inter-Bold.ttf +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/Inter-Bold.woff2 +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/Inter-LICENSE.txt +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/Inter-Regular.ttf +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/Inter-Regular.woff2 +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/editor.js +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/elk-LICENSE.md +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/elk.bundled.js +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/font-metrics.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/icon.svg +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/render.js +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/assets/syntax-reference.md +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/cli.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/convert.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/dbml.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/dbt.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/dbtyml.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/diff.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/export.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/html.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/jsrt.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/layout.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/mcp.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/measure.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/model.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/parser.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/project.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/serve.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/share.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/tags.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/src/quickdbd_cli/targets.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml/team.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/LICENSE +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/README.md +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/alias_of_duplicated_names.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/alias_of_duplicated_names.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/dep.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/dep.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_columns.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_columns.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_enum_field.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_enum_field.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_name.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_name.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_names.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_names.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_table_partial_injections.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_table_partial_injections.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/enum_as_default_column_value.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/enum_as_default_column_value.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/enum_name.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/enum_name.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/erroneous.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/erroneous.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/multiple_notes_in_table_group.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/multiple_notes_in_table_group.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/nonexisting_column_in_index.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/nonexisting_column_in_index.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/nonexisting_column_in_index_table_partial.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/nonexisting_column_in_index_table_partial.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/nonexisting_inline_ref_column_in_table.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/nonexisting_inline_ref_column_in_table.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/nonexisting_inline_ref_column_in_table_partial.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/nonexisting_inline_ref_column_in_table_partial.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/ref_validator.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/ref_validator.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/sticky_notes_validator.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/sticky_notes_validator.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/table_partial.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/table_partial.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/unknown_table_group_field.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/unknown_table_group_field.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/array_type.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/array_type.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/checks.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/checks.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/circular_ref_1_inline_1_element.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/circular_ref_1_inline_1_element.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/circular_ref_2_elements.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/circular_ref_2_elements.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/circular_ref_2_inlines.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/circular_ref_2_inlines.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/column_caller_type.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/column_caller_type.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/comment.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/comment.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/composite_pk.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/composite_pk.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/default_tables.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/default_tables.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep_color.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep_color.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep_duplicate.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep_duplicate.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep_pipeline.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep_pipeline.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/enum_as_default_column_value.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/enum_as_default_column_value.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/enum_tables.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/enum_tables.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/erroneous.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/erroneous.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/general_schema.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/general_schema.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/header_color_tables.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/header_color_tables.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/index_table_partial.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/index_table_partial.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/index_tables.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/index_tables.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/metadata.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/metadata.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/metadata_errors.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/metadata_errors.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/multi_notes.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/multi_notes.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/multiline_string.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/multiline_string.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/negative_number.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/negative_number.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/note_normalize.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/note_normalize.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/note_normalize_with_top_empty_lines.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/note_normalize_with_top_empty_lines.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/old_undocumented_syntax.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/old_undocumented_syntax.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/primary_key.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/primary_key.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/project.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/project.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/ref_name_and_color_setting.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/ref_name_and_color_setting.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/ref_settings.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/ref_settings.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/referential_actions.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/referential_actions.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/self_referential_ref_in_tablepartial.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/self_referential_ref_in_tablepartial.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/sticky_notes.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/sticky_notes.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_element.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_element.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_group.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_group.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_group_element.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_group_element.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_group_settings.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_group_settings.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_partial.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_partial.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_reappear_tablegroup.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_reappear_tablegroup.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_settings.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/table_settings.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/tablepartial_causing_circular_ref.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/tablepartial_causing_circular_ref.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/two_inline_refs.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/two_inline_refs.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/call_expression.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/call_expression.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/element_in_simple_body.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/element_in_simple_body.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/erroneous_setting.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/erroneous_setting.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/expression.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/expression.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/last_invalid_number.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/last_invalid_number.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/list_expression.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/list_expression.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/trailing_comments.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/trailing_comments.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/tuple_expression.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/parser/tuple_expression.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/checks.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/checks.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/complex_names.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/complex_names.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/dep.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/dep.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/enum.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/enum.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/invalid_args.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/invalid_args.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/public_schema.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/public_schema.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/redefined_note.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/redefined_note.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/ref_error_setting.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/ref_error_setting.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/ref_in_table.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/ref_in_table.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/schema_nested_tablegroup.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/schema_nested_tablegroup.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_group_settings.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_group_settings.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_partial_check.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_partial_check.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_partial_settings_general.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_partial_settings_general.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_settings_check.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_settings_check.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_settings_general.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/table_settings_general.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/wrong_sub_element_declarations.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/wrong_sub_element_declarations.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/wrong_table_partial_injection_syntax.dbml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/validator/wrong_table_partial_injection_syntax.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbt-yml/dbt_project.yml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbt-yml/erd/schema.txt +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbt-yml/models/marts/customers.sql +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbt-yml/models/marts/docs.md +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbt-yml/models/marts/orders.sql +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbt-yml/models/marts/payments.sql +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbt-yml/models/marts/schema.yml +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/jaffle/LICENSE +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/jaffle/README.md +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/jaffle/catalog.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/jaffle/manifest.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/targets/cases.json +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_agent.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_dbml.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_dbml_pipeline.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_dbt.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_dbtyml.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_diff.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_mcp.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_packaging.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_parser.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_path.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_pipeline.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_render.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_select.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_serve.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_share.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_tags.py +0 -0
- {quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/test_targets.py +0 -0
|
@@ -25,6 +25,7 @@ The demo gallery (gallery/, not part of the Python package) includes schemas der
|
|
|
25
25
|
Luis Rocha. MIT License.
|
|
26
26
|
* dbt-synthea (gallery/synthea), OHDSI. Apache License 2.0. Trimmed dbt manifest and catalog only.
|
|
27
27
|
* dbt_shopify (gallery/shopify), Fivetran. Apache License 2.0. Trimmed dbt manifest and catalog only.
|
|
28
|
+
* qdbd-dbt-demo (gallery/skytrax), Minh (Mark) Pham. Apache License 2.0. Hand-written ERD and dbt yml only.
|
|
28
29
|
|
|
29
30
|
Each folder keeps the upstream licence in its LICENSE file.
|
|
30
31
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: quickdbd-cli
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.1
|
|
4
4
|
Summary: Compile QuickDBD-syntax schema files into interactive HTML ER diagrams, with no table limit.
|
|
5
5
|
Project-URL: Homepage, https://qdbd.dev/
|
|
6
6
|
Project-URL: Documentation, https://qdbd.dev/guide/
|
|
@@ -76,7 +76,7 @@ Description-Content-Type: text/markdown
|
|
|
76
76
|
<a href="https://qdbd.dev/#demo"><img src="https://raw.githubusercontent.com/MarkPhamm/quickdbd-cli/main/docs/assets/img/demo.gif" alt="Searching, focusing and opening a table in a qdbd diagram" width="760"></a>
|
|
77
77
|
</p>
|
|
78
78
|
<p align="center">
|
|
79
|
-
<em><a href="https://qdbd.dev/#demo">Watch the full
|
|
79
|
+
<em><a href="https://qdbd.dev/#demo">Watch the full 75-second demo →</a></em>
|
|
80
80
|
</p>
|
|
81
81
|
|
|
82
82
|
## What is qdbd?
|
|
@@ -110,9 +110,9 @@ Every demo is a single HTML page written by `qdbd build`, from a QuickDBD schema
|
|
|
110
110
|
| | |
|
|
111
111
|
|---|---|
|
|
112
112
|
| [](https://qdbd.dev/demo/synthetic/)<br>**[200 tables](https://qdbd.dev/demo/synthetic/)**<br>Five business domains, 200 tables and every relationship type. Search, filter, click a table to focus it. | [](https://qdbd.dev/demo/diff/)<br>**[Schema diff](https://qdbd.dev/demo/diff/)**<br>What a branch changed, coloured in: new tables in green, changed columns in amber, removals listed. |
|
|
113
|
-
| [](https://qdbd.dev/demo/synthea/#t=concept)<br>**[OMOP CDM on Synthea](https://qdbd.dev/demo/synthea/#t=concept)**<br>OHDSI's dbt-synthea: synthetic patient records mapped to the OMOP Common Data Model. 145 tables, 235 relationships from tests. | [](https://qdbd.dev/demo/skytrax/#t=dim_customer)<br>**[Skytrax reviews (dbt yml)](https://qdbd.dev/demo/skytrax/#t=dim_customer)**<br>Four star schemas, drawn by hand. One # @dbt: line adds the dbt yml's descriptions, pii tags and column types. Source: the qdbd-dbt-demo repo on GitHub. |
|
|
114
114
|
|
|
115
|
-
[View all
|
|
115
|
+
[View all 21 demos →](https://qdbd.dev/demo/)
|
|
116
116
|
<!-- gallery:end -->
|
|
117
117
|
|
|
118
118
|
## Quickstart
|
|
@@ -194,7 +194,7 @@ jobs:
|
|
|
194
194
|
permissions: { contents: read, pull-requests: write }
|
|
195
195
|
steps:
|
|
196
196
|
- uses: actions/checkout@v4
|
|
197
|
-
- uses: MarkPhamm/quickdbd-cli@v0.6.
|
|
197
|
+
- uses: MarkPhamm/quickdbd-cli@v0.6.1
|
|
198
198
|
with:
|
|
199
199
|
path: erd/ # schema file(s) or folder(s)
|
|
200
200
|
output: site/index.html
|
|
@@ -278,7 +278,7 @@ You edit the text; the diagram is generated from it. Table positions are the one
|
|
|
278
278
|
- [Install](https://qdbd.dev/install/) and [Quick Start](https://qdbd.dev/getting-started/)
|
|
279
279
|
- [Schema Syntax](https://qdbd.dev/syntax/), [many files](https://qdbd.dev/files/), [table positions](https://qdbd.dev/layout/), [tags and colours](https://qdbd.dev/tags/)
|
|
280
280
|
- [Reading the Diagram](https://qdbd.dev/reading-the-diagram/), [selectors](https://qdbd.dev/selectors/), [exports](https://qdbd.dev/exports/), [sharing a link](https://qdbd.dev/sharing/)
|
|
281
|
-
- [dbt Projects](https://qdbd.dev/dbt/), with a [jaffle_shop walkthrough](https://qdbd.dev/example/)
|
|
281
|
+
- [dbt Projects](https://qdbd.dev/dbt/), with a [jaffle_shop walkthrough](https://qdbd.dev/example/) and an [example dbt project](https://github.com/MarkPhamm/qdbd-dbt-demo) whose hand-drawn ERD takes its docs from the yml
|
|
282
282
|
- [AI Agents (MCP)](https://qdbd.dev/mcp/): `qdbd mcp` for Claude, Copilot and Cursor
|
|
283
283
|
- [Schema Diffs](https://qdbd.dev/diffs/), the [GitHub Action](https://qdbd.dev/github-action/) and the [CLI reference](https://qdbd.dev/cli/)
|
|
284
284
|
- [Development](https://qdbd.dev/development/): working on qdbd itself, releasing, and adding a demo
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
<a href="https://qdbd.dev/#demo"><img src="https://raw.githubusercontent.com/MarkPhamm/quickdbd-cli/main/docs/assets/img/demo.gif" alt="Searching, focusing and opening a table in a qdbd diagram" width="760"></a>
|
|
38
38
|
</p>
|
|
39
39
|
<p align="center">
|
|
40
|
-
<em><a href="https://qdbd.dev/#demo">Watch the full
|
|
40
|
+
<em><a href="https://qdbd.dev/#demo">Watch the full 75-second demo →</a></em>
|
|
41
41
|
</p>
|
|
42
42
|
|
|
43
43
|
## What is qdbd?
|
|
@@ -71,9 +71,9 @@ Every demo is a single HTML page written by `qdbd build`, from a QuickDBD schema
|
|
|
71
71
|
| | |
|
|
72
72
|
|---|---|
|
|
73
73
|
| [](https://qdbd.dev/demo/synthetic/)<br>**[200 tables](https://qdbd.dev/demo/synthetic/)**<br>Five business domains, 200 tables and every relationship type. Search, filter, click a table to focus it. | [](https://qdbd.dev/demo/diff/)<br>**[Schema diff](https://qdbd.dev/demo/diff/)**<br>What a branch changed, coloured in: new tables in green, changed columns in amber, removals listed. |
|
|
74
|
-
| [](https://qdbd.dev/demo/synthea/#t=concept)<br>**[OMOP CDM on Synthea](https://qdbd.dev/demo/synthea/#t=concept)**<br>OHDSI's dbt-synthea: synthetic patient records mapped to the OMOP Common Data Model. 145 tables, 235 relationships from tests. | [](https://qdbd.dev/demo/skytrax/#t=dim_customer)<br>**[Skytrax reviews (dbt yml)](https://qdbd.dev/demo/skytrax/#t=dim_customer)**<br>Four star schemas, drawn by hand. One # @dbt: line adds the dbt yml's descriptions, pii tags and column types. Source: the qdbd-dbt-demo repo on GitHub. |
|
|
75
75
|
|
|
76
|
-
[View all
|
|
76
|
+
[View all 21 demos →](https://qdbd.dev/demo/)
|
|
77
77
|
<!-- gallery:end -->
|
|
78
78
|
|
|
79
79
|
## Quickstart
|
|
@@ -155,7 +155,7 @@ jobs:
|
|
|
155
155
|
permissions: { contents: read, pull-requests: write }
|
|
156
156
|
steps:
|
|
157
157
|
- uses: actions/checkout@v4
|
|
158
|
-
- uses: MarkPhamm/quickdbd-cli@v0.6.
|
|
158
|
+
- uses: MarkPhamm/quickdbd-cli@v0.6.1
|
|
159
159
|
with:
|
|
160
160
|
path: erd/ # schema file(s) or folder(s)
|
|
161
161
|
output: site/index.html
|
|
@@ -239,7 +239,7 @@ You edit the text; the diagram is generated from it. Table positions are the one
|
|
|
239
239
|
- [Install](https://qdbd.dev/install/) and [Quick Start](https://qdbd.dev/getting-started/)
|
|
240
240
|
- [Schema Syntax](https://qdbd.dev/syntax/), [many files](https://qdbd.dev/files/), [table positions](https://qdbd.dev/layout/), [tags and colours](https://qdbd.dev/tags/)
|
|
241
241
|
- [Reading the Diagram](https://qdbd.dev/reading-the-diagram/), [selectors](https://qdbd.dev/selectors/), [exports](https://qdbd.dev/exports/), [sharing a link](https://qdbd.dev/sharing/)
|
|
242
|
-
- [dbt Projects](https://qdbd.dev/dbt/), with a [jaffle_shop walkthrough](https://qdbd.dev/example/)
|
|
242
|
+
- [dbt Projects](https://qdbd.dev/dbt/), with a [jaffle_shop walkthrough](https://qdbd.dev/example/) and an [example dbt project](https://github.com/MarkPhamm/qdbd-dbt-demo) whose hand-drawn ERD takes its docs from the yml
|
|
243
243
|
- [AI Agents (MCP)](https://qdbd.dev/mcp/): `qdbd mcp` for Claude, Copilot and Cursor
|
|
244
244
|
- [Schema Diffs](https://qdbd.dev/diffs/), the [GitHub Action](https://qdbd.dev/github-action/) and the [CLI reference](https://qdbd.dev/cli/)
|
|
245
245
|
- [Development](https://qdbd.dev/development/): working on qdbd itself, releasing, and adding a demo
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "quickdbd-cli"
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.1"
|
|
8
8
|
description = "Compile QuickDBD-syntax schema files into interactive HTML ER diagrams, with no table limit."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.6.1"
|
|
@@ -286,10 +286,10 @@ html, body { margin: 0; height: 100%; background: var(--bg); color: var(--ink);
|
|
|
286
286
|
/* doc-comment tooltip */
|
|
287
287
|
.tip { position: absolute; display: none; max-width: 340px; background: var(--tip-bg); color: #eef0f2; border-radius: 8px;
|
|
288
288
|
padding: 8px 10px; font-size: 12px; line-height: 1.45; pointer-events: none; box-shadow: 0 4px 14px rgba(0,0,0,.25);
|
|
289
|
-
z-index: 5; }
|
|
289
|
+
z-index: 5; overflow-wrap: anywhere; }
|
|
290
290
|
.tip.open { display: block; }
|
|
291
291
|
.tip .tt { font-weight: bold; margin-bottom: 3px; }
|
|
292
|
-
.tip .tt span { font-weight: normal; color: #9aa4ad; margin-left: 8px; }
|
|
292
|
+
.tip .tt span { font-weight: normal; color: #9aa4ad; margin-left: 8px; white-space: nowrap; }
|
|
293
293
|
.tip .td { white-space: pre-wrap; color: #d8dde2; }
|
|
294
294
|
|
|
295
295
|
.hint { position: absolute; left: 16px; bottom: 14px; color: var(--muted); font-size: 12px; }
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
function fit(only, animate) {
|
|
194
194
|
var b = Q.bounds(only ? Q.subset(S.vm, only) : S.vm, S.pos, S.mode), sz = stageSize(), pad = 40;
|
|
195
195
|
if (S.regions && !only) b = [b[0] - 30, b[1] - 60, b[2] + 30, b[3] + 30]; // room for region borders and labels
|
|
196
|
-
if (
|
|
196
|
+
if (details.classList.contains("open")) sz = [Math.max(200, sz[0] - 400), sz[1]]; // the panel covers the right side
|
|
197
197
|
// Keep clear of the floating search box / toolbar at the top and, on narrow screens, the toolbar at the bottom.
|
|
198
198
|
var top = 70, bottom = sz[0] < 900 ? 70 : pad, availH = sz[1] - top - bottom;
|
|
199
199
|
var k = Math.min((sz[0] - 2 * pad) / (b[2] - b[0]), availH / (b[3] - b[1]), 1.5);
|
|
@@ -33,15 +33,19 @@ def _demo_sources() -> list[str]:
|
|
|
33
33
|
@pytest.mark.parametrize("src", _demo_sources())
|
|
34
34
|
def test_round_trip_examples_and_demos(src):
|
|
35
35
|
sources = _sources(ROOT / src)
|
|
36
|
-
|
|
36
|
+
# dbt=False matches `qdbd convert`: a converted copy keeps `# @dbt:` as written and does not read the yml.
|
|
37
|
+
original = compile_sources([(d, t) for d, _, t in sources], dbt=False)
|
|
37
38
|
to_dbml = conv.convert(sources, "dbml", split_groups=False)
|
|
38
39
|
back = conv.convert([(k, k, v) for k, v in to_dbml.files.items()], "quickdbd", split_groups=False)
|
|
39
|
-
again = compile_sources(list(back.files.items()))
|
|
40
|
+
again = compile_sources(list(back.files.items()), dbt=False)
|
|
40
41
|
assert again.errors == []
|
|
41
42
|
lost = to_dbml.lost | back.lost
|
|
42
43
|
assert conv.canonical(again, lost) == conv.canonical(original, lost)
|
|
43
44
|
kinds = {w.message.split(":")[0] for w in to_dbml.warnings}
|
|
44
|
-
|
|
45
|
+
allowed = {"table-level relationship", "alias", "settings"}
|
|
46
|
+
if src in ("gallery/dbt-docs/schema.txt", "gallery/skytrax/erd"):
|
|
47
|
+
allowed.add("type") # column types are left blank so the linked yml's data_type is what the diagram shows
|
|
48
|
+
assert kinds <= allowed, kinds
|
|
45
49
|
|
|
46
50
|
|
|
47
51
|
def test_dbml_to_quickdbd_teammate_style():
|
|
@@ -78,6 +78,21 @@ def test_feature_demos(built):
|
|
|
78
78
|
assert _model(built / "regions" / "index.html").get("regions")
|
|
79
79
|
tags = _model(built / "tags" / "index.html")
|
|
80
80
|
assert {"dim", "fact", "staging", "gold"} <= {t["name"] for t in tags["tags"]}
|
|
81
|
+
docs = _model(built / "dbt-docs" / "index.html")
|
|
82
|
+
by_name = {t["name"]: t for t in docs["tables"]}
|
|
83
|
+
orders = by_name["orders"]
|
|
84
|
+
assert orders["doc"] == "One row per order, open or complete.\nRecognised in revenue once status is paid."
|
|
85
|
+
assert orders["tags"] == ["finance"]
|
|
86
|
+
status = next(c for c in orders["cols"] if c["name"] == "status")
|
|
87
|
+
assert status["type"] == "varchar(20)" and status["doc"] == "placed, paid, shipped or returned."
|
|
88
|
+
name = next(c for c in by_name["customers"]["cols"] if c["name"] == "name")
|
|
89
|
+
assert name["doc"] == "The name given at checkout." # the schema comment and the yml say the same thing
|
|
90
|
+
email = next(c for c in by_name["customers"]["cols"] if c["name"] == "email")
|
|
91
|
+
assert email["tags"] == ["pii"] and email["type"] == "varchar"
|
|
92
|
+
assert by_name["shop.charges"]["tags"] == ["raw"]
|
|
93
|
+
refunds = by_name["planned_refunds"]
|
|
94
|
+
assert "tags" not in refunds # `# @dbt: none`: nothing is read from the yml
|
|
95
|
+
assert refunds["doc"] == "Not in dbt yet: the refund flow is still being designed."
|
|
81
96
|
|
|
82
97
|
|
|
83
98
|
def test_sample_databases_and_dbt_projects(built):
|
|
@@ -99,6 +114,10 @@ def test_sample_databases_and_dbt_projects(built):
|
|
|
99
114
|
assert dw["regions"] and len({t["group"] for t in dw["tables"]}) == 5 # one region per business process
|
|
100
115
|
aw = _model(built / "adventureworks" / "index.html")
|
|
101
116
|
assert aw["regions"] and any(t.get("doc") for t in aw["tables"]) # MS_Description -> tooltips
|
|
117
|
+
sky = _model(built / "skytrax" / "index.html")
|
|
118
|
+
assert (len(sky["tables"]), len(sky["rels"])) == (13, 25)
|
|
119
|
+
cust = next(t for t in sky["tables"] if t["name"] == "dim_customer")
|
|
120
|
+
assert cust["doc"] and any(c.get("tags") == ["pii"] for c in cust["cols"]) # from the linked dbt yml
|
|
102
121
|
|
|
103
122
|
|
|
104
123
|
def test_readme_gallery_is_in_sync():
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""The docs iframes load /demo/skytrax/ and /demo/jaffle/, which the mkdocs hook writes into the site."""
|
|
2
|
+
|
|
3
|
+
import importlib.util
|
|
4
|
+
import json
|
|
5
|
+
import re
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
|
|
10
|
+
ROOT = Path(__file__).resolve().parent.parent
|
|
11
|
+
if not (ROOT / "hooks" / "gallery.py").exists() or not (ROOT / "gallery").exists():
|
|
12
|
+
pytest.skip("needs the git checkout's docs hook and gallery/", allow_module_level=True)
|
|
13
|
+
|
|
14
|
+
_spec = importlib.util.spec_from_file_location("docs_gallery_hook", ROOT / "hooks" / "gallery.py")
|
|
15
|
+
hook = importlib.util.module_from_spec(_spec)
|
|
16
|
+
_spec.loader.exec_module(hook)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_docs_iframes_are_built_with_the_site(tmp_path):
|
|
20
|
+
hook.on_post_build({"site_dir": str(tmp_path)})
|
|
21
|
+
sky = tmp_path / "demo" / "skytrax" / "index.html"
|
|
22
|
+
jaffle = tmp_path / "demo" / "jaffle" / "index.html"
|
|
23
|
+
assert sky.exists() and jaffle.exists()
|
|
24
|
+
model = json.loads(re.search(r'id="qdbd-data">(.*?)</script>', sky.read_text(encoding="utf-8"), re.S).group(1))[
|
|
25
|
+
"model"
|
|
26
|
+
]
|
|
27
|
+
cust = next(t for t in model["tables"] if t["name"] == "dim_customer")
|
|
28
|
+
assert cust["doc"]
|
|
29
|
+
assert any(c.get("tags") == ["pii"] for c in cust["cols"])
|
|
30
|
+
assert "orders" in jaffle.read_text(encoding="utf-8")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""The home-page MkDocs hook (hooks/home.py): the live mini diagram and the tour
|
|
1
|
+
"""The home-page MkDocs hook (hooks/home.py): the live mini diagram and the two tour pages."""
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
import re
|
|
@@ -44,6 +44,13 @@ def test_mini_diagram_relationship_text():
|
|
|
44
44
|
assert rel["card"]["sentence"] == "Each Customer row has many Order rows"
|
|
45
45
|
|
|
46
46
|
|
|
47
|
+
def test_tour_has_a_dbt_chapter():
|
|
48
|
+
tour = re.search(r'<section class="qh-section qh-wrap qh-tour">(.*?)</section>', HOME_HTML, re.S).group(1)
|
|
49
|
+
assert tour.count("<li") == 5
|
|
50
|
+
assert 'data-page="dbt"' in tour
|
|
51
|
+
assert "data-dbt-src=" in tour
|
|
52
|
+
|
|
53
|
+
|
|
47
54
|
def test_build_tour(tmp_path):
|
|
48
55
|
page = home.build_tour(tmp_path)
|
|
49
56
|
assert page.exists()
|
|
@@ -53,3 +60,15 @@ def test_build_tour(tmp_path):
|
|
|
53
60
|
# the tables docs/javascripts/home-tour.js types, clicks and paths between
|
|
54
61
|
driven = {"FactInternetSales", "DimCustomer", "FactResellerSales", "DimProductCategory"}
|
|
55
62
|
assert driven <= {t["id"] for t in model["tables"]}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_build_dbt_tour(tmp_path):
|
|
66
|
+
page = home.build_dbt_tour(tmp_path)
|
|
67
|
+
assert page.exists()
|
|
68
|
+
text = page.read_text(encoding="utf-8")
|
|
69
|
+
model = json.loads(re.search(r'id="qdbd-data">(.*?)</script>', text, re.S).group(1))["model"]
|
|
70
|
+
assert len(model["tables"]) == 7
|
|
71
|
+
orders = next(t for t in model["tables"] if t["id"] == "orders")
|
|
72
|
+
assert orders["doc"] == "One row per order, open or complete.\nRecognised in revenue once status is paid."
|
|
73
|
+
assert orders["tags"] == ["finance"]
|
|
74
|
+
assert {c["name"]: c["type"] for c in orders["cols"]}["amount"] == "numeric(12,2)"
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"""The page elements the qdbd.dev live demo drives (docs/javascripts/home-tour.js).
|
|
2
2
|
|
|
3
|
-
The tour types into the search and filter boxes, clicks tree items, relationship lines and the card's Copy JOIN,
|
|
4
|
-
|
|
3
|
+
The tour types into the search and filter boxes, clicks tree items, relationship lines and the card's Copy JOIN, uses
|
|
4
|
+
the path finder, and in its dbt chapter highlights the yml description, tag chips and column docs. Renaming any of
|
|
5
|
+
these breaks the tour silently, so they are pinned here.
|
|
5
6
|
"""
|
|
6
7
|
|
|
7
8
|
from pathlib import Path
|
|
@@ -16,7 +17,16 @@ def test_tour_contract(tmp_path):
|
|
|
16
17
|
out = tmp_path / "d.html"
|
|
17
18
|
assert main(["build", str(ROOT / "examples" / "quickdbd-sample.txt"), "-o", str(out)]) == 0
|
|
18
19
|
page = out.read_text(encoding="utf-8")
|
|
19
|
-
for el in ('id="q"', 'id="filter"', 'id="zfit"', 'id="rcard"'):
|
|
20
|
+
for el in ('id="q"', 'id="filter"', 'id="zfit"', 'id="rcard"', 'id="details"'):
|
|
20
21
|
assert el in page, el
|
|
21
|
-
for el in (
|
|
22
|
+
for el in (
|
|
23
|
+
'id="pathto"',
|
|
24
|
+
'id="pathsql"',
|
|
25
|
+
'id="rcopy"',
|
|
26
|
+
'class="hit"',
|
|
27
|
+
'class="ti"',
|
|
28
|
+
'class="doc"',
|
|
29
|
+
'class="cd"',
|
|
30
|
+
'class="tchip',
|
|
31
|
+
):
|
|
22
32
|
assert el in VIEWER, el
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.6.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_columns.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_columns.json
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_enum_field.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_enum_field.json
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_name.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_name.json
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_names.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/duplicate_names.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/sticky_notes_validator.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/binder/sticky_notes_validator.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/array_type.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/array_type.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/composite_pk.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/composite_pk.json
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/default_tables.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/default_tables.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep_color.dbml
RENAMED
|
File without changes
|
{quickdbd_cli-0.6.0 → quickdbd_cli-0.6.1}/tests/fixtures/dbml-ref/interpreter/dep_color.json
RENAMED
|
File without changes
|