CREATE DATABASE todos;
CREATE USER todo_user WITH ENCRYPTED PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE todos TO todo_user;
次に、RLS (行レベルセキュリティ) を有効にします。
sql
-- 多分野のテーブル作成
CREATE TABLE todos (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
completed BOOLEAN DEFAULT false,
tenant_id INT NOT NULL
);
-- テナントIDでRLSのポリシーを設定
ALTER TABLE todos ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation_policy ON todos
USING (tenant_id = current_setting('myapp.current_tenant')::int);
RLSが有効な状態で、特定のテナントのみがそのテナントデータにアクセスできるようにします。
入力プロンプト
1. 環境構築
必要なツール Node.js (v14以上) PostgreSQL (v12以上) Docker (オプショナル)
1.1 Node.jsとnpmのインストール
公式サイトからインストールします: https://nodejs.org/
1.2 PostgreSQLのインストール
公式サイトからインストールします: https://www.postgresql.org/download/
1.3 NestJS CLIのインストール
2. フロントエンド: Next.jsのセットアップ
2.1 プロジェクトの作成
2.2 依存関係のインストール
React QueryやAxiosなどの依存ライブラリをインストールします。
2.3 フォルダ構成
以下のようなフォルダ構成を作成します。
2.4 サンプルコード
pages/index.tsx
tsx
3. バックエンド: NestJSのセットアップ
3.1 プロジェクトの作成
3.2 依存関係のインストール PostgreSQLドライバ、およびTypeORMをインストールします。
3.3 フォルダ構成
以下のようなフォルダ構成を作成します。
3.4 サンプルコード
src/app.module.ts
TypeScript
src/modules/todo.module.ts
TypeScript
TypeScript
TypeScript
TypeScript
4. データベース設定(RLSの設定)
4.1 PostgreSQLの設定
PostgreSQLの設定データベースやユーザーを作成します。例として、todosデータベースを作成します。
sql
sql
4.2 環境変数の設定
.env ファイルを作成し、設定を追加します