DO $$
BEGIN
CREATE TABLE IF NOT EXISTS "dev_envs" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
"repository_id" uuid NOT NULL REFERENCES "repositories"("id") ON DELETE CASCADE,
"owner_user_id" uuid NOT NULL REFERENCES "users"("id") ON DELETE CASCADE,
"status" text NOT NULL DEFAULT 'cold',
"preview_url" text,
"container_id" text,
"machine_size" text NOT NULL DEFAULT 'small',
"idle_minutes" integer NOT NULL DEFAULT 30,
"dev_yml" text,
"error_message" text,
"last_active_at" timestamptz NOT NULL DEFAULT now(),
"expires_at" timestamptz,
"created_at" timestamptz NOT NULL DEFAULT now()
);
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'dev_envs create failed (%); dev environments will be unavailable', SQLERRM;
END $$;
DO $$
BEGIN
CREATE UNIQUE INDEX IF NOT EXISTS "dev_envs_repo_owner"
ON "dev_envs" ("repository_id", "owner_user_id");
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'dev_envs_repo_owner index failed (%)', SQLERRM;
END $$;
DO $$
BEGIN
CREATE INDEX IF NOT EXISTS "dev_envs_status_active"
ON "dev_envs" ("status", "last_active_at");
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'dev_envs_status_active index failed (%)', SQLERRM;
END $$;
DO $$
BEGIN
ALTER TABLE "repositories"
ADD COLUMN IF NOT EXISTS "dev_envs_enabled" boolean NOT NULL DEFAULT false;
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'repositories.dev_envs_enabled add failed (%)', SQLERRM;
END $$;
|