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

Commit32876a2

Browse files
committed
add the telemetry_items table
1 parent63246e8 commit32876a2

File tree

13 files changed

+255
-0
lines changed

13 files changed

+255
-0
lines changed

‎coderd/database/dbauthz/dbauthz.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2103,6 +2103,13 @@ func (q *querier) GetTelemetryHTMLFirstServedAt(ctx context.Context) (string, er
21032103
returnq.db.GetTelemetryHTMLFirstServedAt(ctx)
21042104
}
21052105

2106+
func (q*querier)GetTelemetryItem(ctx context.Context,keystring) (database.TelemetryItem,error) {
2107+
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceSystem);err!=nil {
2108+
return database.TelemetryItem{},err
2109+
}
2110+
returnq.db.GetTelemetryItem(ctx,key)
2111+
}
2112+
21062113
func (q*querier)GetTemplateAppInsights(ctx context.Context,arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow,error) {
21072114
iferr:=q.authorizeTemplateInsights(ctx,arg.TemplateIDs);err!=nil {
21082115
returnnil,err
@@ -3092,6 +3099,13 @@ func (q *querier) InsertReplica(ctx context.Context, arg database.InsertReplicaP
30923099
returnq.db.InsertReplica(ctx,arg)
30933100
}
30943101

3102+
func (q*querier)InsertTelemetryItemIfNotExists(ctx context.Context,arg database.InsertTelemetryItemIfNotExistsParams)error {
3103+
iferr:=q.authorizeContext(ctx,policy.ActionCreate,rbac.ResourceSystem);err!=nil {
3104+
returnerr
3105+
}
3106+
returnq.db.InsertTelemetryItemIfNotExists(ctx,arg)
3107+
}
3108+
30953109
func (q*querier)InsertTemplate(ctx context.Context,arg database.InsertTemplateParams)error {
30963110
obj:=rbac.ResourceTemplate.InOrg(arg.OrganizationID)
30973111
iferr:=q.authorizeContext(ctx,policy.ActionCreate,obj);err!=nil {
@@ -4359,6 +4373,13 @@ func (q *querier) UpsertTailnetTunnel(ctx context.Context, arg database.UpsertTa
43594373
returnq.db.UpsertTailnetTunnel(ctx,arg)
43604374
}
43614375

4376+
func (q*querier)UpsertTelemetryItem(ctx context.Context,arg database.UpsertTelemetryItemParams)error {
4377+
iferr:=q.authorizeContext(ctx,policy.ActionUpdate,rbac.ResourceSystem);err!=nil {
4378+
returnerr
4379+
}
4380+
returnq.db.UpsertTelemetryItem(ctx,arg)
4381+
}
4382+
43624383
func (q*querier)UpsertTemplateUsageStats(ctx context.Context)error {
43634384
iferr:=q.authorizeContext(ctx,policy.ActionUpdate,rbac.ResourceSystem);err!=nil {
43644385
returnerr

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4230,6 +4230,21 @@ func (s *MethodTestSuite) TestSystemFunctions() {
42304230
s.Run("SetTelemetryHTMLFirstServedAt",s.Subtest(func(db database.Store,check*expects) {
42314231
check.Args(time.Now().Format(time.RFC3339)).Asserts(rbac.ResourceSystem,policy.ActionUpdate)
42324232
}))
4233+
s.Run("GetTelemetryItem",s.Subtest(func(db database.Store,check*expects) {
4234+
check.Args("test").Asserts(rbac.ResourceSystem,policy.ActionRead).Errors(sql.ErrNoRows)
4235+
}))
4236+
s.Run("InsertTelemetryItemIfNotExists",s.Subtest(func(db database.Store,check*expects) {
4237+
check.Args(database.InsertTelemetryItemIfNotExistsParams{
4238+
Key:"test",
4239+
Value:"value",
4240+
}).Asserts(rbac.ResourceSystem,policy.ActionCreate)
4241+
}))
4242+
s.Run("UpsertTelemetryItem",s.Subtest(func(db database.Store,check*expects) {
4243+
check.Args(database.UpsertTelemetryItemParams{
4244+
Key:"test",
4245+
Value:"value",
4246+
}).Asserts(rbac.ResourceSystem,policy.ActionUpdate)
4247+
}))
42334248
}
42344249

42354250
func (s*MethodTestSuite)TestNotifications() {

‎coderd/database/dbmem/dbmem.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ func New() database.Store {
8989
locks:map[int64]struct{}{},
9090
runtimeConfig:map[string]string{},
9191
userStatusChanges:make([]database.UserStatusChange,0),
92+
telemetryItems:make([]database.TelemetryItem,0),
9293
},
9394
}
9495
// Always start with a default org. Matching migration 198.
@@ -259,6 +260,7 @@ type data struct {
259260
defaultProxyIconURLstring
260261
userStatusChanges []database.UserStatusChange
261262
htmlFirstServedAtstring
263+
telemetryItems []database.TelemetryItem
262264
}
263265

264266
functryPercentile(fs []float64,pfloat64)float64 {
@@ -4341,6 +4343,19 @@ func (q *FakeQuerier) GetTelemetryHTMLFirstServedAt(ctx context.Context) (string
43414343
returnq.htmlFirstServedAt,nil
43424344
}
43434345

4346+
func (q*FakeQuerier)GetTelemetryItem(_ context.Context,keystring) (database.TelemetryItem,error) {
4347+
q.mutex.RLock()
4348+
deferq.mutex.RUnlock()
4349+
4350+
for_,item:=rangeq.telemetryItems {
4351+
ifitem.Key==key {
4352+
returnitem,nil
4353+
}
4354+
}
4355+
4356+
return database.TelemetryItem{},sql.ErrNoRows
4357+
}
4358+
43444359
func (q*FakeQuerier)GetTemplateAppInsights(ctx context.Context,arg database.GetTemplateAppInsightsParams) ([]database.GetTemplateAppInsightsRow,error) {
43454360
err:=validateDatabaseType(arg)
43464361
iferr!=nil {
@@ -8131,6 +8146,30 @@ func (q *FakeQuerier) InsertReplica(_ context.Context, arg database.InsertReplic
81318146
returnreplica,nil
81328147
}
81338148

8149+
func (q*FakeQuerier)InsertTelemetryItemIfNotExists(_ context.Context,arg database.InsertTelemetryItemIfNotExistsParams)error {
8150+
err:=validateDatabaseType(arg)
8151+
iferr!=nil {
8152+
returnerr
8153+
}
8154+
8155+
q.mutex.Lock()
8156+
deferq.mutex.Unlock()
8157+
8158+
for_,item:=rangeq.telemetryItems {
8159+
ifitem.Key==arg.Key {
8160+
returnnil
8161+
}
8162+
}
8163+
8164+
q.telemetryItems=append(q.telemetryItems, database.TelemetryItem{
8165+
Key:arg.Key,
8166+
Value:arg.Value,
8167+
CreatedAt:time.Now(),
8168+
UpdatedAt:time.Now(),
8169+
})
8170+
returnnil
8171+
}
8172+
81348173
func (q*FakeQuerier)InsertTemplate(_ context.Context,arg database.InsertTemplateParams)error {
81358174
iferr:=validateDatabaseType(arg);err!=nil {
81368175
returnerr
@@ -10895,6 +10934,33 @@ func (*FakeQuerier) UpsertTailnetTunnel(_ context.Context, arg database.UpsertTa
1089510934
return database.TailnetTunnel{},ErrUnimplemented
1089610935
}
1089710936

10937+
func (q*FakeQuerier)UpsertTelemetryItem(_ context.Context,arg database.UpsertTelemetryItemParams)error {
10938+
err:=validateDatabaseType(arg)
10939+
iferr!=nil {
10940+
returnerr
10941+
}
10942+
10943+
q.mutex.Lock()
10944+
deferq.mutex.Unlock()
10945+
10946+
fori,item:=rangeq.telemetryItems {
10947+
ifitem.Key==arg.Key {
10948+
q.telemetryItems[i].Value=arg.Value
10949+
q.telemetryItems[i].UpdatedAt=time.Now()
10950+
returnnil
10951+
}
10952+
}
10953+
10954+
q.telemetryItems=append(q.telemetryItems, database.TelemetryItem{
10955+
Key:arg.Key,
10956+
Value:arg.Value,
10957+
CreatedAt:time.Now(),
10958+
UpdatedAt:time.Now(),
10959+
})
10960+
10961+
returnnil
10962+
}
10963+
1089810964
func (q*FakeQuerier)UpsertTemplateUsageStats(ctx context.Context)error {
1089910965
q.mutex.Lock()
1090010966
deferq.mutex.Unlock()

‎coderd/database/dbmetrics/querymetrics.go

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

‎coderd/database/dbmock/dbmock.go

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

‎coderd/database/dump.sql

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DROPTABLE telemetry_items;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CREATETABLEtelemetry_items (
2+
keyTEXTNOT NULL,
3+
valueTEXTNOT NULL,
4+
created_atTIMESTAMP WITH TIME ZONENOT NULL DEFAULT NOW(),
5+
updated_atTIMESTAMP WITH TIME ZONENOT NULL DEFAULT NOW()
6+
);
7+
8+
CREATEUNIQUE INDEXtelemetry_items_key_idxON telemetry_items (key);

‎coderd/database/models.go

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

‎coderd/database/querier.go

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

‎coderd/database/queries.sql.go

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

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp