Skip to content

Data dependency - #933

Open
NQPhuc wants to merge 78 commits into
masterfrom
data-dependency
Open

Data dependency#933
NQPhuc wants to merge 78 commits into
masterfrom
data-dependency

Conversation

@NQPhuc

@NQPhuc NQPhuc commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds the Dep element to the DBML language: a directed dependency between tables or columns.

Dep: users -> orders                        // table to table
Dep: orders.user_id <- users.id             // column to column, either direction
Dep: my_schema.events.id -> users.id        // schema-qualified endpoints
Dep: users -> reports [color: #abcdef]      // inline setting

Dep dep_header [color: #aabbcc] {           // named block, header setting
  users -> orders
}

Dep dep_body {                              // settings in the body, plus a note
  note: 'a comment body quotes the post title'
  orders -> events
  color: #123456
}

Issue

#879

Checklist

Please check directly on the box once each of these are done

  • Documentation (if necessary)
  • Lint Checks Passed
  • Unit Tests Passed
  • Coverage Tests Passed
  • Integration Tests Passed
  • Code Review

@NQPhuc
NQPhuc requested a review from huydo862003 June 22, 2026 09:37
@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown

Benchmark Result

dbml-parse

suite 🏠 master 🔀 this branch change
18k 1998.385ms ±7.47% 3161.102ms ±5.42% 🔴 +58.2%
25k 2600.052ms ±3.29% 3701.909ms ±6.22% 🔴 +42.4%

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown

Coverage Report

Commit: 9f972c7

Overall Coverage

Metric Coverage
Lines ✅ 85.28% (9865/11568)
Statements ✅ 82.15% (10735/13068)
Functions ✅ 87.91% (2036/2316)
Branches ⚠️ 73.09% (6491/8881)

Package Coverage

Package Lines Statements Functions Branches
dbml-cli ✅ 100.00% ✅ 100.00% ✅ 100.00% ✅ 100.00%
dbml-connector ⚠️ 64.62% ⚠️ 64.36% ⚠️ 59.53% ⚠️ 59.09%
dbml-core N/A N/A N/A N/A
dbml-parse ✅ 87.11% ✅ 83.63% ✅ 90.19% ⚠️ 73.98%

⚠️ Coverage Warnings

The following packages have coverage below 80%:

  • dbml-connector: 64.62% line coverage

Files with Coverage Below 80%

dbml-connector

9 file(s) below 80% coverage
File Lines Statements Functions Branches
src/connectors/bigquery/index.ts 0.00% 0.00% 0.00% 0.00%
src/utils/credential-loader.ts 0.00% 0.00% 0.00% 0.00%
src/utils/helpers.ts 0.00% 0.00% 0.00% 0.00%
src/connectors/snowflake/index.ts 10.56% 10.31% 0.00% 0.00%
src/utils/parseSchema.ts 46.15% 42.85% 28.57% 27.27%
src/connectors/connector.ts 66.66% 66.66% 100.00% 57.14%
src/connectors/oracle/tables.ts 71.25% 67.39% 100.00% 56.96%
src/connectors/oracle/index.ts 80.00% 80.76% 100.00% 25.00%
src/connectors/oracle/utils.ts 85.71% 85.71% 100.00% 71.42%

dbml-parse

97 file(s) below 80% coverage
File Lines Statements Functions Branches
src/compiler/queries/container/scope.ts 0.00% 0.00% 0.00% 0.00%
src/core/global_modules/program/utils/records.ts 0.00% 0.00% 0.00% 0.00%
src/services/code_actions/provider.ts 0.00% 0.00% 0.00% 0.00%
src/services/diagnostics/provider.ts 0.00% 0.00% 0.00% 0.00%
src/compiler/queries/pipeline/interpret.ts 10.52% 12.19% 66.66% 41.66%
src/services/suggestions/crossFile.ts 19.35% 19.44% 33.33% 10.00%
src/core/local_modules/enum/index.ts 48.00% 46.29% 57.14% 52.63%
src/core/global_modules/project/interpret.ts 52.50% 46.66% 83.33% 23.07%
src/compiler/queries/legacy/parse.ts 53.84% 46.66% 50.00% 25.00%
src/compiler/projectLayout/layout.ts 54.16% 53.84% 75.00% 52.63%
src/core/local_modules/dep/index.ts 59.37% 58.82% 100.00% 53.57%
src/core/local_modules/ref/index.ts 62.50% 61.76% 100.00% 57.14%
src/core/types/report.ts 62.96% 56.66% 76.92% 57.14%
src/core/global_modules/records/utils/data/values.ts 63.30% 55.71% 72.72% 49.28%
src/compiler/queries/legacy/token.ts 66.66% 66.66% 66.66% 100.00%
src/core/global_modules/enum/bind.ts 66.66% 68.75% 83.33% 50.00%
src/core/local_modules/program/index.ts 66.66% 69.23% 75.00% 62.50%
src/core/types/symbol/symbols.ts 67.36% 59.23% 61.71% 52.43%
src/core/global_modules/note/bind.ts 69.23% 71.42% 83.33% 50.00%
src/core/local_modules/checks/index.ts 69.23% 75.00% 100.00% 64.28%
src/core/local_modules/project/index.ts 69.23% 69.23% 100.00% 63.63%
src/core/parser/utils.ts 69.46% 69.82% 100.00% 77.95%
src/compiler/queries/utils.ts 73.17% 73.43% 84.61% 52.17%
src/core/global_modules/project/bind.ts 73.33% 75.00% 100.00% 50.00%
src/core/local_modules/tablePartial/validate.ts 73.91% 73.04% 81.33% 58.42%
src/core/local_modules/use/index.ts 73.91% 75.00% 75.00% 78.12%
src/core/local_modules/indexes/validate.ts 74.28% 76.00% 90.90% 58.00%
src/core/local_modules/note/index.ts 75.00% 75.86% 75.00% 72.72%
src/services/suggestions/utils/index.ts 75.00% 75.00% 100.00% 62.06%
src/core/local_modules/records/index.ts 75.60% 76.19% 100.00% 68.08%
src/core/local_modules/project/validate.ts 75.86% 75.86% 100.00% 56.25%
src/core/local_modules/custom/index.ts 76.47% 76.19% 80.00% 75.00%
src/core/global_modules/records/utils/data/sqlTypes.ts 76.59% 80.64% 82.35% 72.22%
src/core/local_modules/indexes/index.ts 77.19% 72.58% 63.63% 69.04%
src/core/local_modules/metadata/index.ts 77.77% 76.92% 75.00% 75.00%
src/core/local_modules/note/validate.ts 78.00% 75.92% 82.35% 67.64%
src/core/global_modules/tablePartial/interpret.ts 78.12% 70.90% 78.94% 53.84%
src/core/global_modules/indexes/bind.ts 78.94% 76.92% 90.90% 72.41%
src/core/types/relation.ts 79.31% 73.52% 58.33% 80.00%
src/core/types/filepath.ts 79.48% 78.57% 77.77% 70.37%
src/core/global_modules/program/utils/external.ts 80.00% 80.00% 100.00% 70.00%
src/core/global_modules/tableGroup/bind.ts 80.00% 80.00% 100.00% 57.14%
src/core/global_modules/utils.ts 80.24% 77.27% 72.72% 65.51%
src/core/local_modules/records/validate.ts 80.28% 80.55% 93.75% 72.30%
src/core/global_modules/indexes/interpret.ts 81.39% 72.00% 100.00% 56.66%
src/core/local_modules/tablePartial/index.ts 81.48% 81.48% 100.00% 77.27%
src/core/local_modules/diagramView/validate.ts 81.57% 78.04% 84.21% 72.72%
src/core/local_modules/checks/validate.ts 81.63% 82.69% 93.75% 70.00%
__tests__/utils/compiler.ts 82.26% 79.78% 100.00% 57.14%
src/core/global_modules/records/bind.ts 82.92% 83.72% 93.75% 67.30%
src/compiler/queries/container/token.ts 83.33% 85.71% 100.00% 75.00%
src/core/parser/parser.ts 83.65% 83.96% 98.50% 75.50%
src/core/global_modules/ref/bind.ts 83.87% 83.87% 90.00% 75.00%
src/core/local_modules/enum/validate.ts 83.87% 80.30% 81.25% 73.68%
__tests__/utils/mocks.ts 85.71% 86.20% 75.00% 100.00%
src/compiler/queries/transform/syncDep.ts 85.71% 74.21% 80.00% 59.84%
src/core/local_modules/dep/validate.ts 85.71% 82.60% 93.33% 75.00%
src/services/suggestions/provider.ts 86.90% 83.29% 92.64% 74.54%
src/services/suggestions/utils/useMerger.ts 86.95% 81.13% 100.00% 46.34%
src/core/global_modules/tablePartial/bind.ts 87.03% 87.27% 100.00% 71.42%
src/compiler/queries/transform/utils/index.ts 87.23% 78.33% 90.00% 75.80%
src/compiler/queries/transform/updateElementSetting.ts 87.50% 87.87% 100.00% 73.77%
src/core/local_modules/metadata/validate.ts 87.50% 85.41% 100.00% 71.87%
src/services/suggestions/recordRowSnippet.ts 88.46% 87.09% 100.00% 73.80%
src/compiler/queries/nodeAtPosition.ts 88.88% 90.00% 100.00% 75.00%
src/core/global_modules/diagramView/index.ts 89.16% 86.23% 83.33% 78.18%
src/core/global_modules/tableGroup/interpret.ts 89.58% 89.58% 100.00% 77.27%
src/core/utils/note.ts 89.65% 87.14% 100.00% 78.33%
src/compiler/index.ts 90.90% 90.97% 73.68% 80.00%
src/core/global_modules/records/index.ts 90.90% 87.15% 100.00% 79.16%
src/core/types/symbol/metadata.ts 91.00% 79.34% 95.83% 63.74%
src/core/global_modules/records/utils/constraints/pk.ts 91.66% 88.88% 93.75% 63.15%
src/core/global_modules/table/index.ts 91.75% 89.86% 100.00% 77.29%
src/core/local_modules/table/validate.ts 92.22% 92.82% 98.03% 79.06%
src/core/global_modules/schema/index.ts 92.26% 82.46% 91.66% 70.07%
src/core/global_modules/table/interpret.ts 92.68% 84.73% 96.55% 66.66%
src/core/global_modules/diagramView/interpret.ts 94.59% 90.40% 92.85% 75.75%
src/services/suggestions/use.ts 94.68% 87.61% 100.00% 77.45%
src/core/global_modules/ref/interpret.ts 95.83% 94.11% 100.00% 78.84%
src/core/utils/interpret.ts 95.89% 92.00% 100.00% 75.64%
src/core/global_modules/records/interpret.ts 95.97% 92.59% 100.00% 79.54%
__tests__/examples/interpreter/multifile/utils.ts 96.00% 89.65% 100.00% 62.50%
src/core/global_modules/note/interpret.ts 96.29% 96.29% 100.00% 75.00%
src/core/global_modules/dep/interpret.ts 96.93% 92.72% 100.00% 76.19%
src/compiler/queries/canonicalName.ts 96.96% 92.10% 100.00% 76.66%
src/core/global_modules/metadata/utils.ts 97.01% 90.58% 100.00% 75.55%
src/core/global_modules/program/interpret.ts 97.52% 92.60% 100.00% 70.42%
src/core/global_modules/dep/bind.ts 97.82% 80.32% 100.00% 68.29%
src/core/types/errors.ts 98.67% 98.67% 75.00% 100.00%
src/compiler/queries/transform/renameTable.ts 99.05% 90.47% 100.00% 78.82%
src/compiler/queries/transform/utils/ref.ts 100.00% 82.92% 100.00% 64.70%
src/core/global_modules/checks/interpret.ts 100.00% 88.88% 100.00% 60.00%
src/core/global_modules/metadata/bind.ts 100.00% 89.47% 100.00% 75.00%
src/core/global_modules/metadata/interpret.ts 100.00% 80.00% 100.00% 58.33%
src/core/global_modules/program/index.ts 100.00% 85.71% 100.00% 75.00%
src/core/global_modules/records/utils/constraints/unique.ts 100.00% 94.28% 100.00% 58.33%
src/services/definition/provider.ts 100.00% 95.23% 100.00% 71.42%

Comment thread packages/dbml-parse/src/core/local_modules/table/validate.ts Outdated
Comment thread packages/dbml-parse/src/core/local_modules/dep/validate.ts
Comment thread packages/dbml-parse/src/core/local_modules/custom/validate.ts
@huydo862003

Copy link
Copy Markdown
Contributor

Pls help run lint:fix nhe :v

Comment thread packages/dbml-parse/src/core/global_modules/table/index.ts Outdated
Comment thread packages/dbml-parse/src/core/global_modules/table/index.ts Outdated
Comment thread packages/dbml-parse/src/core/global_modules/table/index.ts Outdated
Comment thread packages/dbml-parse/src/core/global_modules/table/interpret.ts Outdated
Comment thread packages/dbml-parse/src/core/types/schemaJson/types.ts
Comment thread packages/dbml-parse/src/core/types/schemaJson/types.ts
Comment thread packages/dbml-parse/src/core/types/symbol/metadata.ts

@huydo862003 huydo862003 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please implement the language services for dep luôn nha :v can reference ref

Comment thread packages/dbml-core/src/export/DbmlExporter.ts Outdated
Comment thread packages/dbml-core/src/export/DbmlExporter.ts
Comment thread packages/dbml-core/src/export/DbmlExporter.ts Outdated
Comment thread packages/dbml-core/src/export/DbmlExporter.ts Outdated
Comment thread packages/dbml-core/src/parse/ANTLR/ASTGeneration/mysql/MySQLASTGen.js Outdated
@huydo862003 huydo862003 mentioned this pull request Jul 16, 2026
6 tasks
@NQPhuc
NQPhuc requested a review from huydo862003 August 3, 2026 04:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants