@@ -121,7 +121,7 @@ func (*fakeQuerier) Ping(_ context.Context) (time.Duration, error) {
121
121
}
122
122
123
123
// InTx doesn't rollback data properly for in-memory yet.
124
- func (q * fakeQuerier ) InTx (fn func (database.Store ) error ) error {
124
+ func (q * fakeQuerier ) InTx (fn func (database.Store ) error , _ * sql. TxOptions ) error {
125
125
q .mutex .Lock ()
126
126
defer q .mutex .Unlock ()
127
127
return fn (& fakeQuerier {mutex : inTxMutex {}, data : q .data })
@@ -2246,6 +2246,7 @@ func (q *fakeQuerier) InsertWorkspaceResource(_ context.Context, arg database.In
2246
2246
Name : arg .Name ,
2247
2247
Hide : arg .Hide ,
2248
2248
Icon : arg .Icon ,
2249
+ DailyCost : arg .DailyCost ,
2249
2250
}
2250
2251
q .provisionerJobResources = append (q .provisionerJobResources , resource )
2251
2252
return resource , nil
@@ -2757,6 +2758,20 @@ func (q *fakeQuerier) UpdateWorkspaceBuildByID(_ context.Context, arg database.U
2757
2758
}
2758
2759
return database.WorkspaceBuild {}, sql .ErrNoRows
2759
2760
}
2761
+ func (q * fakeQuerier ) UpdateWorkspaceBuildCostByID (_ context.Context , arg database.UpdateWorkspaceBuildCostByIDParams ) (database.WorkspaceBuild , error ) {
2762
+ q .mutex .Lock ()
2763
+ defer q .mutex .Unlock ()
2764
+
2765
+ for index , workspaceBuild := range q .workspaceBuilds {
2766
+ if workspaceBuild .ID != arg .ID {
2767
+ continue
2768
+ }
2769
+ workspaceBuild .DailyCost = arg .DailyCost
2770
+ q .workspaceBuilds [index ] = workspaceBuild
2771
+ return workspaceBuild , nil
2772
+ }
2773
+ return database.WorkspaceBuild {}, sql .ErrNoRows
2774
+ }
2760
2775
2761
2776
func (q * fakeQuerier ) UpdateWorkspaceDeletedByID (_ context.Context , arg database.UpdateWorkspaceDeletedByIDParams ) error {
2762
2777
q .mutex .Lock ()
@@ -2858,6 +2873,7 @@ func (q *fakeQuerier) UpdateGroupByID(_ context.Context, arg database.UpdateGrou
2858
2873
if group .ID == arg .ID {
2859
2874
group .Name = arg .Name
2860
2875
group .AvatarURL = arg .AvatarURL
2876
+ group .QuotaAllowance = arg .QuotaAllowance
2861
2877
q .groups [i ] = group
2862
2878
return group , nil
2863
2879
}
@@ -3230,6 +3246,7 @@ func (q *fakeQuerier) InsertGroup(_ context.Context, arg database.InsertGroupPar
3230
3246
Name : arg .Name ,
3231
3247
OrganizationID : arg .OrganizationID ,
3232
3248
AvatarURL : arg .AvatarURL ,
3249
+ QuotaAllowance : arg .QuotaAllowance ,
3233
3250
}
3234
3251
3235
3252
q .groups = append (q .groups , group )
@@ -3430,3 +3447,46 @@ func (q *fakeQuerier) UpdateGitAuthLink(_ context.Context, arg database.UpdateGi
3430
3447
}
3431
3448
return nil
3432
3449
}
3450
+
3451
+ func (q * fakeQuerier ) GetQuotaAllowanceForUser (_ context.Context , userID uuid.UUID ) (int64 , error ) {
3452
+ q .mutex .Lock ()
3453
+ defer q .mutex .Unlock ()
3454
+ var sum int64
3455
+ for _ , member := range q .groupMembers {
3456
+ if member .UserID != userID {
3457
+ continue
3458
+ }
3459
+ for _ , group := range q .groups {
3460
+ if group .ID == member .GroupID {
3461
+ sum += int64 (group .QuotaAllowance )
3462
+ }
3463
+ }
3464
+ }
3465
+ return sum , nil
3466
+ }
3467
+
3468
+ func (q * fakeQuerier ) GetQuotaConsumedForUser (_ context.Context , userID uuid.UUID ) (int64 , error ) {
3469
+ q .mutex .Lock ()
3470
+ defer q .mutex .Unlock ()
3471
+ var sum int64
3472
+ for _ , workspace := range q .workspaces {
3473
+ if workspace .OwnerID != userID {
3474
+ continue
3475
+ }
3476
+ if workspace .Deleted {
3477
+ continue
3478
+ }
3479
+
3480
+ var lastBuild database.WorkspaceBuild
3481
+ for _ , build := range q .workspaceBuilds {
3482
+ if build .WorkspaceID != workspace .ID {
3483
+ continue
3484
+ }
3485
+ if build .CreatedAt .After (lastBuild .CreatedAt ) {
3486
+ lastBuild = build
3487
+ }
3488
+ }
3489
+ sum += int64 (lastBuild .DailyCost )
3490
+ }
3491
+ return sum , nil
3492
+ }
0 commit comments