Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2a68506

Browse files
committed
feat: implement 'is_default' org field
The first organization created is now marked as "default". This isto allow "single org" behavior as we move to a multi org codebase.It is intentional that the user cannot change the default org at thisstage. Only 1 default org can exist, and it is always the first org.
1 parent5a0d240 commit2a68506

12 files changed

+77
-9
lines changed

‎coderd/database/dbmem/dbmem.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5285,6 +5285,7 @@ func (q *FakeQuerier) InsertOrganization(_ context.Context, arg database.InsertO
52855285
Name:arg.Name,
52865286
CreatedAt:arg.CreatedAt,
52875287
UpdatedAt:arg.UpdatedAt,
5288+
IsDefault:len(q.organizations)==0,
52885289
}
52895290
q.organizations=append(q.organizations,organization)
52905291
returnorganization,nil

‎coderd/database/dump.sql

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
DROPINDEX organizations_single_default_org;
2+
ALTERTABLE organizations DROP COLUMN is_default;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-- This migration is intended to maintain the existing behavior of single org
2+
-- deployments, while allowing for multi-org deployments. By default, this organization
3+
-- will be used when no organization is specified.
4+
ALTERTABLE organizations ADD COLUMN is_defaultBOOLEANNOT NULL DEFAULT FALSE;
5+
6+
-- Only 1 org should ever be set to is_default.
7+
createunique indexorganizations_single_default_orgon organizations (is_default)
8+
where is_default= true;
9+
10+
UPDATE
11+
organizations
12+
SET
13+
is_default= true
14+
WHERE
15+
-- The first organization created will be the default.
16+
id= (SELECT idFROM organizationsORDER BYorganizations.created_atASCLIMIT1 );

‎coderd/database/models.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/querier_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,34 @@ func TestUserChangeLoginType(t *testing.T) {
494494
require.Equal(t,bobExpPass,bob.HashedPassword,"hashed password should not change")
495495
}
496496

497+
funcTestDefaultOrg(t*testing.T) {
498+
t.Parallel()
499+
iftesting.Short() {
500+
t.SkipNow()
501+
}
502+
503+
sqlDB:=testSQLDB(t)
504+
err:=migrations.Up(sqlDB)
505+
require.NoError(t,err)
506+
db:=database.New(sqlDB)
507+
ctx:=context.Background()
508+
509+
// Should start with 0 orgs
510+
all,err:=db.GetOrganizations(ctx)
511+
require.NoError(t,err)
512+
require.Len(t,all,0)
513+
514+
org,err:=db.InsertOrganization(ctx, database.InsertOrganizationParams{
515+
ID:uuid.New(),
516+
Name:"default",
517+
Description:"",
518+
CreatedAt:dbtime.Now(),
519+
UpdatedAt:dbtime.Now(),
520+
})
521+
require.NoError(t,err)
522+
require.True(t,org.IsDefault,"first org should always be default")
523+
}
524+
497525
typetvArgsstruct {
498526
Status database.ProvisionerJobStatus
499527
// CreateWorkspace is true if we should create a workspace for the template version

‎coderd/database/queries.sql.go

Lines changed: 11 additions & 6 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/organizations.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ WHERE
3939

4040
-- name: InsertOrganization :one
4141
INSERT INTO
42-
organizations (id,"name", description, created_at, updated_at)
42+
organizations (id,"name", description, created_at, updated_at, is_default)
4343
VALUES
44-
($1, $2, $3, $4, $5) RETURNING*;
44+
-- If no organizations exist, and this is the first, make it the default.
45+
($1, $2, $3, $4, $5, (SELECTcount(*)FROM organizations)=0) RETURNING*;

‎coderd/database/unique_constraint.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/organizations.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,5 +118,6 @@ func convertOrganization(organization database.Organization) codersdk.Organizati
118118
Name:organization.Name,
119119
CreatedAt:organization.CreatedAt,
120120
UpdatedAt:organization.UpdatedAt,
121+
IsDefault:organization.IsDefault,
121122
}
122123
}

‎coderd/organizations_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ func TestOrganizationsByUser(t *testing.T) {
2424
require.NoError(t,err)
2525
require.NotNil(t,orgs)
2626
require.Len(t,orgs,1)
27+
require.True(t,orgs[0].IsDefault,"first org is always default")
28+
29+
// Make an extra org, and it should not be defaulted.
30+
notDefault,err:=client.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
31+
Name:"another",
32+
})
33+
require.NoError(t,err)
34+
require.False(t,notDefault.IsDefault,"only 1 default org allowed")
2735
}
2836

2937
funcTestOrganizationByUserAndName(t*testing.T) {

‎codersdk/organizations.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type Organization struct {
3030
Namestring`json:"name" validate:"required"`
3131
CreatedAt time.Time`json:"created_at" validate:"required" format:"date-time"`
3232
UpdatedAt time.Time`json:"updated_at" validate:"required" format:"date-time"`
33+
IsDefaultbool`json:"is_default" validate:"required"`
3334
}
3435

3536
typeOrganizationMemberstruct {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp