データモデル·
データモデル
プラグイン独自テーブル plg_<scope>_<name>_* と niyase.data CRUD。
プラグインは原則として 独自テーブルで完結させます。 コアデータ(社員・部署等)の読み取りは コア API 連携 を参照(直接 DB 参照は不可)。
niyase.data で CRUD
manifest の tables[] で宣言したテーブルを、ブリッジ経由で操作します。
const niyase = useNiyase();
await niyase.data.list("task", { limit: 50 }); // → { items, nextCursor? }
await niyase.data.get("task", id);
await niyase.data.create("task", { title: "現場A" });
await niyase.data.update("task", id, { status: "DONE" });
await niyase.data.remove("task", id); // ソフトデリート
内部的には /nplg/:pluginId/:table を叩きます(ユーザーセッション + 現在のスペースで認可)。
物理テーブル名の規約
manifest の論理テーブル名は、各環境のローダが以下に展開します:
plg_<scope>_<name>_<table>
例: @your-org/tasks の task → plg_your_org_tasks_task
(scope / name のハイフンはアンダースコアに変換。Postgres の 63 文字上限内に収めること)
自動付与カラム
ローダが以下を自動付与するため、columns に書く必要はありません:
id(主キー)workspace_idcreated_at/updated_atdeleted_at(ソフトデリート)
マスタと業務テーブル
業種プリセット(industryPresets[].seedData)で投入する初期データ(マスタ)と、
ユーザーが作るトランザクション(業務)を分けて設計します:
- マスタ:
task_status/categoryなど —seedDataで初期投入、ユーザー編集可 - 業務:
task/quoteなど — ユーザーが作成するレコード
カラム型
プラットフォーム非依存の 3 型で宣言します(ローダが各 DB の物理型に翻訳):
| 型 | 用途 |
|---|---|
TEXT | 文字列・日付(ISO)・列挙 |
INTEGER | 整数・金額(円を整数管理) |
REAL | 小数 |