Skip to content

DBX-6750 Support example records - #923

Merged
huydo862003 merged 17 commits into
masterfrom
feat/example-records
Sep 23, 2026
Merged

huydo862003 merged 17 commits into
masterfrom
feat/example-records

Conversation

@huydo862003

Copy link
Copy Markdown
Contributor

Summary

  • Support example flag on records
    records table_name [example] {}
    
  • When a records have the example flag, it won't be exported into SQL.

Issue

(issue link here)

Lasting Changes (Technical)

(please list down: code changes/things that have wide-effect; new libraries/functions added that can be used by others; examples below)

  • (Added class EmailValidator to validate email address' validity)
  • (Added Tenant#is_trial? check)

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

@huydo862003
huydo862003 force-pushed the feat/example-records branch from c861ebc to 8d0f63d Compare June 4, 2026 07:55
@huydo862003 huydo862003 changed the title Support example records DBX-6750 Support example records Jun 4, 2026
@linear-code

linear-code Bot commented Jun 4, 2026

Copy link
Copy Markdown

DBX-6750

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown

Coverage Report

Commit: 8f32d67

Overall Coverage

Metric Coverage
Lines ✅ 85.03% (8557/10063)
Statements ✅ 82.43% (9297/11278)
Functions ✅ 87.55% (1800/2056)
Branches ⚠️ 73.60% (5562/7557)

Package Coverage

Package Lines Statements Functions Branches
@dbml/dbml-cli ✅ 100.00% ✅ 100.00% ✅ 100.00% ✅ 100.00%
@dbml/dbml-connector ⚠️ 64.62% ⚠️ 64.36% ⚠️ 59.53% ⚠️ 59.09%
@dbml/dbml-core N/A N/A N/A N/A
@dbml/dbml-parse ✅ 87.15% ✅ 84.21% ✅ 90.11% ⚠️ 74.70%

⚠️ Coverage Warnings

The following packages have coverage below 80%:

  • @dbml/dbml-connector: 64.62% line coverage

Files with Coverage Below 80%

@dbml/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/dbml-parse

80 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/services/diagnostics/provider.ts 0.00% 0.00% 0.00% 0.00%
src/compiler/queries/pipeline/interpret.ts 11.76% 13.51% 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/projectLayout/layout.ts 54.16% 53.84% 75.00% 52.63%
src/compiler/queries/legacy/parse.ts 61.53% 53.33% 66.66% 25.00%
src/core/local_modules/ref/index.ts 62.50% 61.76% 100.00% 57.14%
src/core/types/symbol/symbols.ts 62.54% 55.03% 59.83% 45.77%
src/core/global_modules/records/utils/data/values.ts 63.30% 55.71% 72.72% 49.28%
src/core/local_modules/tableGroup/validate.ts 64.10% 64.44% 71.42% 58.00%
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/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/local_modules/custom/index.ts 70.58% 71.42% 80.00% 68.75%
src/core/local_modules/note/validate.ts 70.58% 67.56% 76.92% 62.50%
src/core/types/report.ts 70.83% 66.66% 83.33% 71.42%
src/core/local_modules/tablePartial/validate.ts 73.01% 71.83% 79.22% 57.67%
src/compiler/queries/utils.ts 73.10% 73.38% 90.90% 51.11%
src/core/global_modules/project/bind.ts 73.33% 75.00% 100.00% 50.00%
src/core/local_modules/indexes/validate.ts 73.91% 76.00% 90.90% 58.00%
src/core/local_modules/use/index.ts 73.91% 75.00% 75.00% 81.25%
src/core/local_modules/note/index.ts 75.00% 75.86% 75.00% 72.72%
src/core/local_modules/project/validate.ts 75.00% 75.86% 100.00% 56.25%
src/services/suggestions/utils/index.ts 75.00% 75.00% 100.00% 60.71%
src/core/parser/utils.ts 76.50% 76.78% 100.00% 81.88%
src/core/global_modules/records/utils/data/sqlTypes.ts 76.59% 80.64% 82.35% 72.22%
src/core/global_modules/utils.ts 76.92% 73.80% 62.50% 62.50%
src/core/local_modules/indexes/index.ts 77.19% 72.58% 63.63% 69.04%
src/core/global_modules/tablePartial/interpret.ts 77.65% 70.64% 78.94% 53.73%
src/core/global_modules/indexes/bind.ts 78.37% 76.92% 90.90% 72.41%
src/core/global_modules/tableGroup/bind.ts 79.31% 80.00% 100.00% 57.14%
src/core/types/filepath.ts 79.48% 78.57% 77.77% 70.37%
src/core/global_modules/program/utils.ts 80.00% 80.00% 100.00% 70.00%
src/core/local_modules/checks/validate.ts 81.25% 82.69% 93.75% 70.00%
src/core/local_modules/diagramView/validate.ts 81.33% 78.04% 84.21% 72.72%
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/records/index.ts 82.50% 83.33% 100.00% 74.46%
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/global_modules/ref/bind.ts 83.33% 83.87% 90.00% 75.00%
src/core/local_modules/enum/validate.ts 83.60% 80.30% 81.25% 73.68%
src/core/parser/parser.ts 83.87% 84.10% 98.38% 75.80%
src/core/local_modules/records/validate.ts 83.95% 84.70% 95.23% 75.36%
__tests__/utils/compiler.ts 84.28% 82.25% 100.00% 58.11%
src/core/global_modules/records/utils/constraints/pk.ts 84.61% 81.42% 92.59% 56.52%
src/core/local_modules/table/validate.ts 85.60% 86.13% 90.24% 75.53%
__tests__/utils/mocks.ts 85.71% 86.20% 75.00% 100.00%
src/core/global_modules/use/index.ts 86.31% 82.92% 100.00% 78.22%
src/core/global_modules/tablePartial/bind.ts 86.79% 87.27% 100.00% 71.42%
src/services/suggestions/utils/useMerger.ts 86.95% 81.13% 100.00% 46.34%
src/core/global_modules/tableGroup/interpret.ts 88.09% 88.37% 100.00% 77.27%
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% 85.50% 83.33% 77.27%
src/compiler/index.ts 89.74% 89.91% 75.00% 75.00%
src/services/suggestions/provider.ts 89.84% 85.91% 100.00% 77.17%
src/core/global_modules/table/interpret.ts 90.62% 84.72% 95.45% 67.70%
src/core/global_modules/records/index.ts 90.90% 87.15% 100.00% 79.16%
src/core/global_modules/schema/index.ts 92.26% 82.46% 91.66% 70.07%
src/core/types/symbol/metadata.ts 92.42% 78.42% 97.67% 63.15%
src/core/utils/interpret.ts 92.98% 89.47% 100.00% 73.13%
src/core/global_modules/diagramView/interpret.ts 94.54% 90.40% 92.85% 75.75%
src/services/suggestions/use.ts 94.68% 87.61% 100.00% 77.45%
src/core/global_modules/note/interpret.ts 95.23% 95.45% 100.00% 66.66%
__tests__/examples/interpreter/multifile/utils.ts 96.00% 89.65% 100.00% 62.50%
src/core/global_modules/records/interpret.ts 96.00% 92.63% 100.00% 79.85%
src/compiler/queries/canonicalName.ts 96.96% 92.10% 100.00% 76.66%
src/core/global_modules/program/interpret.ts 97.07% 91.45% 100.00% 70.31%
src/core/types/errors.ts 98.48% 98.49% 66.66% 100.00%
src/compiler/queries/transform/renameTable.ts 99.05% 90.47% 100.00% 78.82%
src/core/global_modules/checks/interpret.ts 100.00% 88.88% 100.00% 60.00%
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% 95.00% 100.00% 62.50%
src/services/definition/provider.ts 100.00% 95.23% 100.00% 71.42%

@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Benchmark Result

dbml-parse

suite 🏠 master 🔀 this branch change
18k 1304.567ms ±3.63% 1211.484ms ±2.72% 🟢 -7.1%
25k 1825.653ms ±3.48% 1984.439ms ±5.65% 🔴 +8.7%

@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Coverage Report

Commit: 3b52a27

Overall Coverage

Metric Coverage
Lines ✅ 85.35% (9889/11586)
Statements ✅ 82.33% (10762/13071)
Functions ✅ 88.08% (2062/2341)
Branches ⚠️ 73.34% (6478/8833)

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.19% ✅ 83.84% ✅ 90.35% ⚠️ 74.25%

⚠️ 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

99 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.51% 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/custom/index.ts 70.58% 71.42% 80.00% 68.75%
src/core/parser/utils.ts 73.05% 73.37% 100.00% 80.31%
src/core/local_modules/project/index.ts 73.07% 73.07% 100.00% 68.18%
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/project/validate.ts 75.86% 75.86% 100.00% 56.25%
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/global_modules/records/utils/constraints/helper.ts 81.08% 80.48% 82.35% 76.47%
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% 56.30%
src/core/local_modules/records/index.ts 82.50% 83.33% 100.00% 74.46%
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/records/validate.ts 84.14% 84.70% 95.23% 75.36%
src/compiler/queries/transform/syncDep.ts 84.84% 84.21% 100.00% 63.33%
src/core/local_modules/enum/validate.ts 85.48% 81.81% 81.25% 76.31%
__tests__/utils/mocks.ts 85.71% 86.20% 75.00% 100.00%
src/services/suggestions/provider.ts 86.38% 82.82% 92.64% 74.92%
src/compiler/queries/transform/updateElementSetting.ts 86.79% 86.88% 100.00% 71.92%
src/core/local_modules/dep/validate.ts 86.81% 82.00% 93.33% 76.23%
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/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.05% 79.45% 95.89% 63.74%
src/core/local_modules/table/validate.ts 91.66% 92.30% 98.03% 77.90%
src/core/global_modules/table/index.ts 91.75% 89.86% 100.00% 77.29%
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/utils/interpret.ts 94.52% 91.00% 100.00% 74.35%
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%
__tests__/examples/interpreter/multifile/utils.ts 96.00% 89.65% 100.00% 62.50%
src/core/global_modules/records/interpret.ts 96.00% 92.63% 100.00% 79.85%
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/tableGroup/index.ts 97.36% 91.30% 100.00% 78.78%
src/core/global_modules/program/interpret.ts 97.52% 92.60% 100.00% 70.42%
src/core/global_modules/records/utils/constraints/pk.ts 97.61% 92.18% 96.66% 67.85%
src/compiler/queries/transform/renameTable.ts 99.05% 90.47% 100.00% 78.82%
src/compiler/queries/transform/utils/dep.ts 100.00% 87.50% 100.00% 73.68%
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/dep/bind.ts 100.00% 81.96% 100.00% 73.17%
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% 93.75% 100.00% 50.00%
src/core/utils/diagnostics_reporter/ref.ts 100.00% 100.00% 100.00% 70.83%
src/services/definition/provider.ts 100.00% 95.23% 100.00% 71.42%

@@ -1,8 +1,9 @@
import { partition } from 'lodash-es';
import { forIn } from 'lodash-es';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

merge with the import above nhe

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

dcacb07 fixed nhó

}

const token = getTokenPosition(this.element);
const example = this.metadata.example(this.compiler) || undefined;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The method already return a boolean value, so I don't think we need an undefined here 🤔

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

the point is to avoid breaking tests 🤣 adding example: false would break existing tests for the snapshots

@huydo862003
huydo862003 merged commit eebbd72 into master Sep 23, 2026
8 checks passed
@huydo862003
huydo862003 deleted the feat/example-records branch September 23, 2026 05:05
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