# Driver 模式与产物生成

DSL 定义元数据，driver 翻译成目标语言产物。产物与定义解耦，同一份定义可生成不同目标：

| 定义 | Driver | 产物 | 消费方 |
|---|---|---|---|
| `TableSchema` | mysql-driver | `CREATE TABLE` | MySQL |
| `EnumDef` | enum-driver | `export enum Xxx { … }` + `XXX_LABEL` | 业务代码 |
| `DtoMessage` | typebox-driver | `Type.Object({…})` + `Static` 推导 | fastify v5 参数校验 |

## 生成 SQL

```ts
import { buildCreateTableSql } from '@pylonts/dsl';

buildCreateTableSql(order);   // "CREATE TABLE `order` (\n  ..."
```

默认不生成外键约束；需要时：

```ts
buildCreateTableSql(order, { generateForeignKeys: true });
```

## 生成枚举源码

```ts
import { renderEnum } from '@pylonts/dsl';

renderEnum(AcquiringType);    // TS enum 源码
```

## 生成 TypeBox 源码

```ts
import { renderDtoMessage } from '@pylonts/dsl';

renderDtoMessage(orderPageQuery, {
  source: 'dto_schema/order/order.dto.ts',
  resolver: (name) => ({ from: '@mall/enums/user', name }),   // 枚举引用解析
});
```