Skip to content

Commit 668af18

Browse files
committed
feat: add killswitch for notifications
1 parent e6d5e21 commit 668af18

File tree

16 files changed

+145
-19
lines changed

16 files changed

+145
-19
lines changed

coderd/apidoc/docs.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbauthz/dbauthz.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -814,6 +814,14 @@ func (q *querier) customRoleEscalationCheck(ctx context.Context, actor rbac.Subj
814814
return nil
815815
}
816816

817+
func (q *querier) GetNotificationSettings(ctx context.Context) (string, error) {
818+
panic("not implemented")
819+
}
820+
821+
func (q *querier) UpsertNotificationSettings(ctx context.Context, value string) error {
822+
panic("not implemented")
823+
}
824+
817825
func (q *querier) AcquireLock(ctx context.Context, id int64) error {
818826
return q.db.AcquireLock(ctx, id)
819827
}
@@ -1479,6 +1487,10 @@ func (q *querier) GetNotificationMessagesByStatus(ctx context.Context, arg datab
14791487
return q.db.GetNotificationMessagesByStatus(ctx, arg)
14801488
}
14811489

1490+
func (q *querier) GetNotificationsSettings(ctx context.Context) (string, error) {
1491+
panic("not implemented")
1492+
}
1493+
14821494
func (q *querier) GetOAuth2ProviderAppByID(ctx context.Context, id uuid.UUID) (database.OAuth2ProviderApp, error) {
14831495
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceOauth2App); err != nil {
14841496
return database.OAuth2ProviderApp{}, err
@@ -3687,6 +3699,10 @@ func (q *querier) UpsertLogoURL(ctx context.Context, value string) error {
36873699
return q.db.UpsertLogoURL(ctx, value)
36883700
}
36893701

3702+
func (q *querier) UpsertNotificationsSettings(ctx context.Context, value string) error {
3703+
panic("not implemented")
3704+
}
3705+
36903706
func (q *querier) UpsertOAuthSigningKey(ctx context.Context, value string) error {
36913707
if err := q.authorizeContext(ctx, policy.ActionUpdate, rbac.ResourceSystem); err != nil {
36923708
return err

coderd/database/dbmem/dbmem.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -917,6 +917,14 @@ func (q *FakeQuerier) getLatestWorkspaceAppByTemplateIDUserIDSlugNoLock(ctx cont
917917
return database.WorkspaceApp{}, sql.ErrNoRows
918918
}
919919

920+
func (q *FakeQuerier) GetNotificationSettings(ctx context.Context) (string, error) {
921+
panic("not implemented")
922+
}
923+
924+
func (q *FakeQuerier) UpsertNotificationSettings(ctx context.Context, value string) error {
925+
panic("not implemented")
926+
}
927+
920928
func (*FakeQuerier) AcquireLock(_ context.Context, _ int64) error {
921929
return xerrors.New("AcquireLock must only be called within a transaction")
922930
}
@@ -2760,6 +2768,10 @@ func (q *FakeQuerier) GetNotificationMessagesByStatus(_ context.Context, arg dat
27602768
return out, nil
27612769
}
27622770

2771+
func (q *FakeQuerier) GetNotificationsSettings(ctx context.Context) (string, error) {
2772+
panic("not implemented")
2773+
}
2774+
27632775
func (q *FakeQuerier) GetOAuth2ProviderAppByID(_ context.Context, id uuid.UUID) (database.OAuth2ProviderApp, error) {
27642776
q.mutex.Lock()
27652777
defer q.mutex.Unlock()
@@ -8713,6 +8725,10 @@ func (q *FakeQuerier) UpsertLogoURL(_ context.Context, data string) error {
87138725
return nil
87148726
}
87158727

8728+
func (q *FakeQuerier) UpsertNotificationsSettings(ctx context.Context, value string) error {
8729+
panic("not implemented")
8730+
}
8731+
87168732
func (q *FakeQuerier) UpsertOAuthSigningKey(_ context.Context, value string) error {
87178733
q.mutex.Lock()
87188734
defer q.mutex.Unlock()

coderd/database/dbmetrics/dbmetrics.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmock/dbmock.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dump.sql

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-- Nothing to do
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- This has to be outside a transaction
2+
ALTER TYPE resource_type ADD VALUE IF NOT EXISTS 'notifications_settings';

coderd/database/models.go

Lines changed: 5 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 23 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/siteconfig.sql

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,13 @@ SELECT
7979
-- name: UpsertHealthSettings :exec
8080
INSERT INTO site_configs (key, value) VALUES ('health_settings', $1)
8181
ON CONFLICT (key) DO UPDATE SET value = $1 WHERE site_configs.key = 'health_settings';
82+
83+
-- name: GetNotificationsSettings :one
84+
SELECT
85+
COALESCE((SELECT value FROM site_configs WHERE key = 'notifications_settings'), '{}') :: text AS notifications_settings
86+
;
87+
88+
-- name: UpsertNotificationsSettings :exec
89+
INSERT INTO site_configs (key, value) VALUES ('notifications_settings', $1)
90+
ON CONFLICT (key) DO UPDATE SET value = $1 WHERE site_configs.key = 'notifications_settings';
91+

codersdk/audit.go

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,21 @@ import (
1414
type ResourceType string
1515

1616
const (
17-
ResourceTypeTemplate ResourceType = "template"
18-
ResourceTypeTemplateVersion ResourceType = "template_version"
19-
ResourceTypeUser ResourceType = "user"
20-
ResourceTypeWorkspace ResourceType = "workspace"
21-
ResourceTypeWorkspaceBuild ResourceType = "workspace_build"
22-
ResourceTypeGitSSHKey ResourceType = "git_ssh_key"
23-
ResourceTypeAPIKey ResourceType = "api_key"
24-
ResourceTypeGroup ResourceType = "group"
25-
ResourceTypeLicense ResourceType = "license"
26-
ResourceTypeConvertLogin ResourceType = "convert_login"
27-
ResourceTypeHealthSettings ResourceType = "health_settings"
28-
ResourceTypeWorkspaceProxy ResourceType = "workspace_proxy"
29-
ResourceTypeOrganization ResourceType = "organization"
30-
ResourceTypeOAuth2ProviderApp ResourceType = "oauth2_provider_app"
17+
ResourceTypeTemplate ResourceType = "template"
18+
ResourceTypeTemplateVersion ResourceType = "template_version"
19+
ResourceTypeUser ResourceType = "user"
20+
ResourceTypeWorkspace ResourceType = "workspace"
21+
ResourceTypeWorkspaceBuild ResourceType = "workspace_build"
22+
ResourceTypeGitSSHKey ResourceType = "git_ssh_key"
23+
ResourceTypeAPIKey ResourceType = "api_key"
24+
ResourceTypeGroup ResourceType = "group"
25+
ResourceTypeLicense ResourceType = "license"
26+
ResourceTypeConvertLogin ResourceType = "convert_login"
27+
ResourceTypeHealthSettings ResourceType = "health_settings"
28+
ResourceTypeNotificationsSettings ResourceType = "notifications_settings"
29+
ResourceTypeWorkspaceProxy ResourceType = "workspace_proxy"
30+
ResourceTypeOrganization ResourceType = "organization"
31+
ResourceTypeOAuth2ProviderApp ResourceType = "oauth2_provider_app"
3132
// nolint:gosec // This is not a secret.
3233
ResourceTypeOAuth2ProviderAppSecret ResourceType = "oauth2_provider_app_secret"
3334
ResourceTypeCustomRole ResourceType = "custom_role"
@@ -64,6 +65,8 @@ func (r ResourceType) FriendlyString() string {
6465
return "organization"
6566
case ResourceTypeHealthSettings:
6667
return "health_settings"
68+
case ResourceTypeNotificationsSettings:
69+
return "notifications_settings"
6770
case ResourceTypeOAuth2ProviderApp:
6871
return "oauth2 app"
6972
case ResourceTypeOAuth2ProviderAppSecret:

docs/api/schemas.md

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

site/src/api/typesGenerated.ts

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)