スキーマとは
スキーマは、プロジェクトの構成を定義する設定ファイルです。以下の要素で構成されます。
- tables: データベースの定義
- tableModules: データベースで再利用可能なモジュールの定義
- buckets: バケットの定義
- authorities: 権限の定義
設定ファイルは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;