Skip to content

Commit 298ca3e

Browse files
committed
Remove takeFirstTime
1 parent 5648499 commit 298ca3e

File tree

1 file changed

+30
-33
lines changed

1 file changed

+30
-33
lines changed

coderd/database/databasefake/generator.go

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ func (g *Generator) User(ctx context.Context, seed database.User) database.User
137137
return populate(ctx, g, "", seed)
138138
}
139139

140+
// Populate uses `require` which calls `t.FailNow()` and must be called from the
141+
// go routine running the test or benchmark function.
140142
func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) map[string]interface{} {
141143
db := g.db
142144
t := g.testT
@@ -156,10 +158,10 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
156158
HashedSecret: takeFirstBytes(orig.HashedSecret, hashed[:]),
157159
IPAddress: pqtype.Inet{},
158160
UserID: takeFirst(orig.UserID, uuid.New()),
159-
LastUsed: takeFirstTime(orig.LastUsed, time.Now()),
160-
ExpiresAt: takeFirstTime(orig.ExpiresAt, time.Now().Add(time.Hour)),
161-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
162-
UpdatedAt: takeFirstTime(orig.UpdatedAt, time.Now()),
161+
LastUsed: takeFirst(orig.LastUsed, time.Now()),
162+
ExpiresAt: takeFirst(orig.ExpiresAt, time.Now().Add(time.Hour)),
163+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
164+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
163165
LoginType: takeFirst(orig.LoginType, database.LoginTypePassword),
164166
Scope: takeFirst(orig.Scope, database.APIKeyScopeAll),
165167
})
@@ -171,8 +173,8 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
171173
case database.Template:
172174
template, err := db.InsertTemplate(ctx, database.InsertTemplateParams{
173175
ID: takeFirst(orig.ID, g.Lookup(name)),
174-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
175-
UpdatedAt: takeFirstTime(orig.UpdatedAt, time.Now()),
176+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
177+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
176178
OrganizationID: takeFirst(orig.OrganizationID, g.PrimaryOrg(ctx).ID),
177179
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
178180
Provisioner: takeFirst(orig.Provisioner, database.ProvisionerTypeEcho),
@@ -198,8 +200,8 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
198200
Valid: takeFirst(orig.TemplateID.Valid, true),
199201
},
200202
OrganizationID: takeFirst(orig.OrganizationID, g.PrimaryOrg(ctx).ID),
201-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
202-
UpdatedAt: takeFirstTime(orig.UpdatedAt, time.Now()),
203+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
204+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
203205
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
204206
Readme: takeFirst(orig.Readme, namesgenerator.GetRandomName(1)),
205207
JobID: takeFirst(orig.JobID, uuid.New()),
@@ -212,8 +214,8 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
212214
workspace, err := db.InsertWorkspace(ctx, database.InsertWorkspaceParams{
213215
ID: takeFirst(orig.ID, g.Lookup(name)),
214216
OwnerID: takeFirst(orig.OwnerID, uuid.New()),
215-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
216-
UpdatedAt: takeFirstTime(orig.UpdatedAt, time.Now()),
217+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
218+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
217219
OrganizationID: takeFirst(orig.OrganizationID, g.PrimaryOrg(ctx).ID),
218220
TemplateID: takeFirst(orig.TemplateID, uuid.New()),
219221
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
@@ -226,16 +228,16 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
226228
case database.WorkspaceBuild:
227229
build, err := db.InsertWorkspaceBuild(ctx, database.InsertWorkspaceBuildParams{
228230
ID: takeFirst(orig.ID, g.Lookup(name)),
229-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
230-
UpdatedAt: takeFirstTime(orig.UpdatedAt, time.Now()),
231+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
232+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
231233
WorkspaceID: takeFirst(orig.WorkspaceID, uuid.New()),
232234
TemplateVersionID: takeFirst(orig.TemplateVersionID, uuid.New()),
233235
BuildNumber: takeFirst(orig.BuildNumber, 0),
234236
Transition: takeFirst(orig.Transition, database.WorkspaceTransitionStart),
235237
InitiatorID: takeFirst(orig.InitiatorID, uuid.New()),
236238
JobID: takeFirst(orig.JobID, uuid.New()),
237239
ProvisionerState: takeFirstBytes(orig.ProvisionerState, []byte{}),
238-
Deadline: takeFirstTime(orig.Deadline, time.Now().Add(time.Hour)),
240+
Deadline: takeFirst(orig.Deadline, time.Now().Add(time.Hour)),
239241
Reason: takeFirst(orig.Reason, database.BuildReasonInitiator),
240242
})
241243
require.NoError(t, err, "insert workspace build")
@@ -247,8 +249,8 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
247249
Email: takeFirst(orig.Email, namesgenerator.GetRandomName(1)),
248250
Username: takeFirst(orig.Username, namesgenerator.GetRandomName(1)),
249251
HashedPassword: takeFirstBytes(orig.HashedPassword, []byte{}),
250-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
251-
UpdatedAt: takeFirstTime(orig.UpdatedAt, time.Now()),
252+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
253+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
252254
RBACRoles: []string{},
253255
LoginType: takeFirst(orig.LoginType, database.LoginTypePassword),
254256
})
@@ -261,8 +263,8 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
261263
ID: takeFirst(orig.ID, g.Lookup(name)),
262264
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
263265
Description: takeFirst(orig.Description, namesgenerator.GetRandomName(1)),
264-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
265-
UpdatedAt: takeFirstTime(orig.UpdatedAt, time.Now()),
266+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
267+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
266268
})
267269
require.NoError(t, err, "insert organization")
268270

@@ -283,8 +285,8 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
283285
case database.ProvisionerJob:
284286
job, err := db.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
285287
ID: takeFirst(orig.ID, g.Lookup(name)),
286-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
287-
UpdatedAt: takeFirstTime(orig.UpdatedAt, time.Now()),
288+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
289+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
288290
OrganizationID: takeFirst(orig.OrganizationID, g.PrimaryOrg(ctx).ID),
289291
InitiatorID: takeFirst(orig.InitiatorID, uuid.New()),
290292
Provisioner: takeFirst(orig.Provisioner, database.ProvisionerTypeEcho),
@@ -301,14 +303,13 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
301303
case database.WorkspaceResource:
302304
resource, err := db.InsertWorkspaceResource(ctx, database.InsertWorkspaceResourceParams{
303305
ID: takeFirst(orig.ID, g.Lookup(name)),
304-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
306+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
305307
JobID: takeFirst(orig.JobID, uuid.New()),
306308
Transition: takeFirst(orig.Transition, database.WorkspaceTransitionStart),
307-
// TODO: What type to put here?
308-
Type: takeFirst(orig.Type, ""),
309-
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
310-
Hide: takeFirst(orig.Hide, false),
311-
Icon: takeFirst(orig.Icon, ""),
309+
Type: takeFirst(orig.Type, "fake_resource"),
310+
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
311+
Hide: takeFirst(orig.Hide, false),
312+
Icon: takeFirst(orig.Icon, ""),
312313
InstanceType: sql.NullString{
313314
String: takeFirst(orig.InstanceType.String, ""),
314315
Valid: takeFirst(orig.InstanceType.Valid, false),
@@ -323,7 +324,7 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
323324
file, err := db.InsertFile(ctx, database.InsertFileParams{
324325
ID: takeFirst(orig.ID, g.Lookup(name)),
325326
Hash: takeFirst(orig.Hash, hex.EncodeToString(make([]byte, 32))),
326-
CreatedAt: takeFirstTime(orig.CreatedAt, time.Now()),
327+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
327328
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
328329
Mimetype: takeFirst(orig.Mimetype, "application/x-tar"),
329330
Data: takeFirstBytes(orig.Data, []byte{}),
@@ -338,7 +339,7 @@ func (g *Generator) Populate(ctx context.Context, seed map[string]interface{}) m
338339
LinkedID: takeFirst(orig.LinkedID),
339340
OAuthAccessToken: takeFirst(orig.OAuthAccessToken, uuid.NewString()),
340341
OAuthRefreshToken: takeFirst(orig.OAuthAccessToken, uuid.NewString()),
341-
OAuthExpiry: takeFirstTime(orig.OAuthExpiry, time.Now().Add(time.Hour*24)),
342+
OAuthExpiry: takeFirst(orig.OAuthExpiry, time.Now().Add(time.Hour*24)),
342343
})
343344

344345
require.NoError(t, err, "insert link")
@@ -367,12 +368,8 @@ func (g *Generator) Lookup(name string) uuid.UUID {
367368
return id
368369
}
369370

370-
func takeFirstTime(values ...time.Time) time.Time {
371-
return takeFirstF(values, func(v time.Time) bool {
372-
return !v.IsZero()
373-
})
374-
}
375-
371+
// takeFirstBytes implements takeFirst for []byte.
372+
// []byte is not a comparable type.
376373
func takeFirstBytes(values ...[]byte) []byte {
377374
return takeFirstF(values, func(v []byte) bool {
378375
return len(v) != 0

0 commit comments

Comments
 (0)