Infrastructure as Code (IaC)

Infrastructure as Code (IaC)は、コードベースでインフラを管理する方法です。

インフラ周りのコードも GitHub で管理すれば、別のプロジェクトを立ち上げたいときに、再利用が可能であるため、効率よくセットアップすることができます。

  • 自動化: インフラを自動化し、手動で行うタスクをスクリプト化することができます。これにより、インフラのセットアップや更新を効率的に行うことができます。
  • 再現性: インフラをコードベースで管理するため、環境を簡単に再現することができます。
  • 統一性: インフラを統一し、統一したインフラを使用することで、一貫性を維持することができます。
  • 監査性: インフラの変更履歴を記録することができるため、監査性が高くなります。
  • 統合性: DevOps のフローを統合することができ、開発から運用までのワークフローを効率化することができます。

テーブル作成

Supabase はダッシュボード上でテーブルを作成できますが、インフラ設定もコードで管理したいので、SQL Editor を使用して構築していきます。

SQL Editor

SQL Editor をクリックして New query で SQL コードを書いていきます。

コードを貼り付けて RUN すると、一気にテーブルなどが作成されます。

-- タイムゾーン設定
alter database postgres set timezone to 'Asia/Tokyo';

-- postsテーブル作成
create table posts (
  id uuid not null default uuid_generate_v4() primary key,
  prompt text not null,
  content text,
  updated_at timestamp default now() not null,
  created_at timestamp default now() not null
);

-- postsテーブルRLS設定
alter table posts enable row level security;
create policy "誰でも参照可能" on posts for select using ( true );
create policy "誰でも追加可能" on posts for insert with check ( true );
create policy "誰でも更新可能" on posts for update using ( true );

-- updated_at更新
create extension if not exists moddatetime schema extensions;
create trigger handle_updated_at before update on posts
  for each row execute procedure moddatetime (updated_at);

タイムゾーン設定

alter database postgres set timezoneでタイムゾーンを設定することができます。

今回はTokyoを指定しておきます。

テーブル作成

create tableでテーブルを作成することができます。

Row Level Security 設定

create policyで RLS を設定していきます。

アクセス制限を細かく設定することができます。

テーブル自動更新

投稿テーブルが更新されたときにupdated_atを自動的に更新します。

extensionを作成してcreate triggerで自動更新されるように設定します。

以上で、Supabase の設定は終了です。

テーブルとストレージが作成できていることを確認してください。

Infrastructure as Code で、簡単にデータベースの構築ができてしまいます。