add 命令

将新的实体定义添加到现有的数据 API 生成器配置文件。 必须已创建 dab init配置。 用于 dab update 在创建后修改实体。

小窍门

用于 dab add 创建新实体并 dab update 对其进行改进。 字段名称重新映射 () 仅在 > 中 可用,不可用于

Syntax

dab add <entity-name> [options]

快速浏览

选项 概要
<entity-name> 必需的位置参数。 逻辑实体名称。
-c, --config 配置文件路径。 默认 dab-config.json
--cache.enabled 为实体启用/禁用缓存。
--cache.ttl 缓存生存时间(以秒为单位)。
--description 实体的自由格式说明。
--fields.exclude 逗号分隔的排除字段。
--fields.include 逗号分隔的允许字段(* = 全部)。
--graphql GraphQL 曝光: falsetruesingularsingular:plural
--graphql.operation 仅存储过程。 querymutation (默认突变)。
--permissions 必填。 一对或多 role:actions 对。 重复。
--policy-database 在 DB 查询中应用的 OData 样式筛选器。
--policy-request 在数据库调用之前评估的请求策略。
--rest REST 曝光: falsetrue或自定义路由。
--rest.methods 仅存储过程。 允许的 HTTP 谓词。 默认 POST。
-s, --source 必填。 数据库对象名称(表、视图或存储过程)。
--source.key-fields 视图或 PK 未推断时是必需的。 不允许使用 procs。
--source.params 仅存储过程。 默认参数值。
--source.type 源类型:table、、 stored-procedureview(默认表)。

<entity-name>

配置中实体的逻辑名称。区分大小写。

Example

dab add Book --source dbo.Books --permissions "anonymous:read"

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        {
          "role": "anonymous",
          "actions": [ "read" ]
        }
      ]
    }
  }
}

-c, --config

配置文件路径。 默认值为 dab-config.json

Example

dab add Book --config ./dab-config.mssql.json --source dbo.Books --permissions "anonymous:read"

--cache.enabled

启用或禁用缓存。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --cache.enabled true

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "cache": {
        "enabled": true
      }
    }
  }
}

--cache.ttl

缓存生存时间(以秒为单位)。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --cache.ttl 300

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "cache": {
        "ttl-seconds": 300
      }
    }
  }
}

--description

实体的自由文本说明。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --description "Entity for managing book inventory"

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "description": "Entity for managing book inventory"
    }
  }
}

--fields.exclude

要排除的字段的逗号分隔列表。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --fields.exclude "internal_flag,secret_note"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "graphql": {
        "fields": {
          "exclude": [ "internal_flag", "secret_note" ]
        }
      }
    }
  }
}

--fields.include

要公开的字段的逗号分隔列表。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --fields.include "id,title,price"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "graphql": {
        "fields": {
          "include": [ "id", "title", "price" ]
        }
      }
    }
  }
}

--graphql

控制 GraphQL 公开。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --graphql book:books

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "graphql": {
        "singular": "book",
        "plural": "books"
      }
    }
  }
}

--graphql.operation

仅存储过程。 GraphQL作类型。 默认值为 mutation

Example

dab add BookProc --source dbo.MyProc --source.type stored-procedure --permissions "admin:execute" --graphql.operation query

生成的配置

{
  "entities": {
    "BookProc": {
      "source": { "type": "stored-procedure", "object": "dbo.MyProc" },
      "permissions": [
        { "role": "admin", "actions": [ "execute" ] }
      ],
      "graphql": {
        "operation": "query"
      }
    }
  }
}

--permissions

定义角色→作对。 对多个角色使用重复标志。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --permissions "authenticated:create,read,update,delete"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] },
        { "role": "authenticated", "actions": [ "create", "read", "update", "delete" ] }
      ]
    }
  }
}

--policy-database

数据库级策略。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --policy-database "region eq 'US'"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "policies": {
        "database": "region eq 'US'"
      }
    }
  }
}

--policy-request

请求级策略。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --policy-request "@claims.role == 'admin'"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "policies": {
        "request": "@claims.role == 'admin'"
      }
    }
  }
}

--rest

控制 REST 曝光。

Example

dab add Book --source dbo.Books --permissions "anonymous:read" --rest BooksApi

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ],
      "rest": {
        "path": "BooksApi"
      }
    }
  }
}

--rest.methods

仅存储过程。 允许执行的 HTTP 谓词。 默认为 POST。 对于表/视图忽略。

Example

dab add BookProc --source dbo.MyProc --source.type stored-procedure --permissions "admin:execute" --rest true --rest.methods GET,POST

生成的配置

{
  "entities": {
    "BookProc": {
      "source": { "type": "stored-procedure", "object": "dbo.MyProc" },
      "permissions": [
        { "role": "admin", "actions": [ "execute" ] }
      ],
      "rest": {
        "path": "BookProc",
        "methods": [ "GET", "POST" ]
      }
    }
  }
}

-s, --source

必填。 数据库对象的名称:表、视图或存储过程。

Example

dab add Book --source dbo.Books --permissions "anonymous:read"

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}

--source.key-fields

对于视图必需。 对于没有可推断 PK 的表也是必需的。 不允许使用存储过程。

Example

dab add BookView --source dbo.MyView --source.type view --source.key-fields "id,region" --permissions "anonymous:read"

生成的配置

{
  "entities": {
    "BookView": {
      "source": {
        "type": "view",
        "object": "dbo.MyView",
        "keyFields": [ "id", "region" ]
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}

--source.params

仅存储过程。 逗号分隔 name:value 对。 不允许表或视图。

Example

dab add BookProc --source dbo.MyProc --source.type stored-procedure --source.params "year:2024,active:true" --permissions "admin:execute"

生成的配置

{
  "entities": {
    "BookProc": {
      "source": {
        "type": "stored-procedure",
        "object": "dbo.MyProc",
        "params": {
          "year": 2024,
          "active": true
        }
      },
      "permissions": [
        { "role": "admin", "actions": [ "execute" ] }
      ]
    }
  }
}

--source.type

数据库对象的类型。 默认值:table

Example

dab add Book --source dbo.Books --source.type table --permissions "anonymous:read"

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}