Featuresスキーマスキーマとは

スキーマとは

スキーマは、プロジェクトの構成を定義する設定ファイルです。以下の要素で構成されます。

設定ファイルはTypeScriptで記述します。このファイルをCMS CLIやConsumer CLIに読み込ませて使用します。通常、ファイル名は orizm.config.ts でプロジェクトルートに配置しますが、CLIのオプションで任意のファイル名や配置場所を指定できます。

スキーマの適用

プロジェクトにスキーマを適用するには、CMS CLIを使用します。CMS CLIは @orizm-private/cms-sdk パッケージに含まれています。

スキーマを適用するには update コマンドを使用します。このコマンドは、プロジェクトのバックエンドにアクセスするためのクライアントコードやTypeScriptの型定義を生成します。

orizm-cms update

コードの生成のみを実行する場合は、generate コマンドを使用します。

orizm-cms generate

CMS CLIの詳細は以下を参照してください。

Consumer向けのクライアントコードを生成するには、Consumer CLIを使用します。Consumer CLIは @orizm-private/consumer-sdk パッケージに含まれています。

generate コマンドでコードを生成します。

orizm-consumer generate

Consumer CLIの詳細は以下を参照してください。

スキーマの例

以下はスキーマの例です。

orizm.config.ts
import type { Orizm } from "@orizm/cms-sdk";
 
export default {
  tables: [
    {
      name: "blog",
      columns: [
        {
          name: "slug",
          type: "string",
          required: true,
        },
        {
          name: "title",
          type: "string",
          required: true,
        },
        {
          name: "tags",
          type: "module-array",
          moduleName: "tag",
        },
        {
          name: "body",
          type: "string",
        },
      ],
      indexes: [{ columns: ["slug"], unique: true }],
      enableDrafts: true,
    },
    {
      name: "tag",
      columns: [
        {
          name: "key",
          type: "string",
          required: true,
        },
        {
          name: "displayName",
          type: "string",
          required: true,
        },
      ],
      indexes: [{ columns: ["key"], unique: true }],
    },
  ],
  tableModules: [
    {
      name: "tag",
      columns: [
        {
          name: "tag",
          type: "reference",
          tableName: "tag",
          onDelete: "cascade",
        },
      ],
    },
  ],
  buckets: [
    {
      name: "object",
    },
  ],
  authorities: [
    {
      match: { role: "editor" },
      allowTables: ["blog", "category", "tag"],
      allowBuckets: ["images"],
      denyUserManagement: true,
    },
  ],
} satisfies Orizm.ProjectDefine;