feat: implement 'is_default' org field (#12142)

The first organization created is now marked as "default". This is
to allow "single org" behavior as we move to a multi org codebase.

It is intentional that the user cannot change the default org at this
stage. Only 1 default org can exist, and it is always the first org.

Closes: https://github.com/coder/coder/issues/11961
This commit is contained in:
Steven Masley
2024-02-15 11:01:16 -06:00
committed by GitHub
parent a67362fdb1
commit 2bf2f88b09
19 changed files with 101 additions and 16 deletions
@@ -0,0 +1,2 @@
DROP INDEX organizations_single_default_org;
ALTER TABLE organizations DROP COLUMN is_default;
@@ -0,0 +1,16 @@
-- This migration is intended to maintain the existing behavior of single org
-- deployments, while allowing for multi-org deployments. By default, this organization
-- will be used when no organization is specified.
ALTER TABLE organizations ADD COLUMN is_default BOOLEAN NOT NULL DEFAULT FALSE;
-- Only 1 org should ever be set to is_default.
create unique index organizations_single_default_org on organizations (is_default)
where is_default = true;
UPDATE
organizations
SET
is_default = true
WHERE
-- The first organization created will be the default.
id = (SELECT id FROM organizations ORDER BY organizations.created_at ASC LIMIT 1 );