Skip to content

Commit 70cedd6

Browse files
committed
Clean up dbmem funcs
1 parent d4d6e51 commit 70cedd6

File tree

1 file changed

+68
-81
lines changed

1 file changed

+68
-81
lines changed

coderd/database/dbmem/dbmem.go

Lines changed: 68 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,48 +1168,43 @@ func (q *FakeQuerier) DeleteOAuth2ProviderAppByID(_ context.Context, id uuid.UUI
11681168
q.mutex.Lock()
11691169
defer q.mutex.Unlock()
11701170

1171-
for index, app := range q.oauth2ProviderApps {
1172-
if app.ID == id {
1173-
q.oauth2ProviderApps[index] = q.oauth2ProviderApps[len(q.oauth2ProviderApps)-1]
1174-
q.oauth2ProviderApps = q.oauth2ProviderApps[:len(q.oauth2ProviderApps)-1]
1171+
index := slices.IndexFunc(q.oauth2ProviderApps, func(app database.OAuth2ProviderApp) bool {
1172+
return app.ID == id
1173+
})
11751174

1176-
// Cascade delete into secrets.
1177-
var deletedSecretIDs []uuid.UUID
1178-
var secrets []database.OAuth2ProviderAppSecret
1179-
for _, secret := range q.oauth2ProviderAppSecrets {
1180-
if secret.AppID == id {
1181-
deletedSecretIDs = append(deletedSecretIDs, secret.ID)
1182-
} else {
1183-
secrets = append(secrets, secret)
1184-
}
1185-
}
1186-
q.oauth2ProviderAppSecrets = secrets
1187-
1188-
// Cascade delete into tokens.
1189-
var keyIDsToDelete []string
1190-
var tokens []database.OAuth2ProviderAppToken
1191-
for _, token := range q.oauth2ProviderAppTokens {
1192-
if slice.Contains(deletedSecretIDs, token.AppSecretID) {
1193-
keyIDsToDelete = append(keyIDsToDelete, token.APIKeyID)
1194-
} else {
1195-
tokens = append(tokens, token)
1196-
}
1197-
}
1198-
q.oauth2ProviderAppTokens = tokens
1175+
if index < 0 {
1176+
return sql.ErrNoRows
1177+
}
11991178

1200-
// Delete from API keys.
1201-
var keys []database.APIKey
1202-
for _, key := range q.apiKeys {
1203-
if !slices.Contains(keyIDsToDelete, key.ID) {
1204-
keys = append(keys, key)
1205-
}
1206-
}
1207-
q.apiKeys = keys
1179+
q.oauth2ProviderApps[index] = q.oauth2ProviderApps[len(q.oauth2ProviderApps)-1]
1180+
q.oauth2ProviderApps = q.oauth2ProviderApps[:len(q.oauth2ProviderApps)-1]
12081181

1209-
return nil
1182+
// Cascade delete secrets associated with the deleted app.
1183+
var deletedSecretIDs []uuid.UUID
1184+
q.oauth2ProviderAppSecrets = slices.DeleteFunc(q.oauth2ProviderAppSecrets, func(secret database.OAuth2ProviderAppSecret) bool {
1185+
matches := secret.AppID == id
1186+
if matches {
1187+
deletedSecretIDs = append(deletedSecretIDs, secret.ID)
12101188
}
1211-
}
1212-
return sql.ErrNoRows
1189+
return matches
1190+
})
1191+
1192+
// Cascade delete tokens through the deleted secrets.
1193+
var keyIDsToDelete []string
1194+
q.oauth2ProviderAppTokens = slices.DeleteFunc(q.oauth2ProviderAppTokens, func(token database.OAuth2ProviderAppToken) bool {
1195+
matches := slice.Contains(deletedSecretIDs, token.AppSecretID)
1196+
if matches {
1197+
keyIDsToDelete = append(keyIDsToDelete, token.APIKeyID)
1198+
}
1199+
return matches
1200+
})
1201+
1202+
// Cascade delete API keys linked to the deleted tokens.
1203+
q.apiKeys = slices.DeleteFunc(q.apiKeys, func(key database.APIKey) bool {
1204+
return slices.Contains(keyIDsToDelete, key.ID)
1205+
})
1206+
1207+
return nil
12131208
}
12141209

12151210
func (q *FakeQuerier) DeleteOAuth2ProviderAppCodeByID(_ context.Context, id uuid.UUID) error {
@@ -1249,36 +1244,33 @@ func (q *FakeQuerier) DeleteOAuth2ProviderAppSecretByID(_ context.Context, id uu
12491244
q.mutex.Lock()
12501245
defer q.mutex.Unlock()
12511246

1252-
for index, secret := range q.oauth2ProviderAppSecrets {
1253-
if secret.ID == id {
1254-
q.oauth2ProviderAppSecrets[index] = q.oauth2ProviderAppSecrets[len(q.oauth2ProviderAppSecrets)-1]
1255-
q.oauth2ProviderAppSecrets = q.oauth2ProviderAppSecrets[:len(q.oauth2ProviderAppSecrets)-1]
1256-
1257-
// Cascade delete into tokens.
1258-
var keyIDsToDelete []string
1259-
var tokens []database.OAuth2ProviderAppToken
1260-
for _, token := range q.oauth2ProviderAppTokens {
1261-
if token.AppSecretID == id {
1262-
keyIDsToDelete = append(keyIDsToDelete, token.APIKeyID)
1263-
} else {
1264-
tokens = append(tokens, token)
1265-
}
1266-
}
1267-
q.oauth2ProviderAppTokens = tokens
1247+
index := slices.IndexFunc(q.oauth2ProviderAppSecrets, func(secret database.OAuth2ProviderAppSecret) bool {
1248+
return secret.ID == id
1249+
})
12681250

1269-
// Delete from API keys.
1270-
var keys []database.APIKey
1271-
for _, key := range q.apiKeys {
1272-
if !slices.Contains(keyIDsToDelete, key.ID) {
1273-
keys = append(keys, key)
1274-
}
1275-
}
1276-
q.apiKeys = keys
1251+
if index < 0 {
1252+
return sql.ErrNoRows
1253+
}
12771254

1278-
return nil
1255+
q.oauth2ProviderAppSecrets[index] = q.oauth2ProviderAppSecrets[len(q.oauth2ProviderAppSecrets)-1]
1256+
q.oauth2ProviderAppSecrets = q.oauth2ProviderAppSecrets[:len(q.oauth2ProviderAppSecrets)-1]
1257+
1258+
// Cascade delete tokens created through the deleted secret.
1259+
var keyIDsToDelete []string
1260+
q.oauth2ProviderAppTokens = slices.DeleteFunc(q.oauth2ProviderAppTokens, func(token database.OAuth2ProviderAppToken) bool {
1261+
matches := token.AppSecretID == id
1262+
if matches {
1263+
keyIDsToDelete = append(keyIDsToDelete, token.APIKeyID)
12791264
}
1280-
}
1281-
return sql.ErrNoRows
1265+
return matches
1266+
})
1267+
1268+
// Cascade delete API keys linked to the deleted tokens.
1269+
q.apiKeys = slices.DeleteFunc(q.apiKeys, func(key database.APIKey) bool {
1270+
return slices.Contains(keyIDsToDelete, key.ID)
1271+
})
1272+
1273+
return nil
12821274
}
12831275

12841276
func (q *FakeQuerier) DeleteOAuth2ProviderAppTokensByAppAndUserID(_ context.Context, arg database.DeleteOAuth2ProviderAppTokensByAppAndUserIDParams) error {
@@ -1291,32 +1283,27 @@ func (q *FakeQuerier) DeleteOAuth2ProviderAppTokensByAppAndUserID(_ context.Cont
12911283
defer q.mutex.Unlock()
12921284

12931285
var keyIDsToDelete []string
1294-
var tokens []database.OAuth2ProviderAppToken
1295-
for _, token := range q.oauth2ProviderAppTokens {
1286+
q.oauth2ProviderAppTokens = slices.DeleteFunc(q.oauth2ProviderAppTokens, func(token database.OAuth2ProviderAppToken) bool {
12961287
// Join secrets and keys to see if the token matches.
12971288
secretIdx := slices.IndexFunc(q.oauth2ProviderAppSecrets, func(secret database.OAuth2ProviderAppSecret) bool {
12981289
return secret.ID == token.AppSecretID
12991290
})
13001291
keyIdx := slices.IndexFunc(q.apiKeys, func(key database.APIKey) bool {
13011292
return key.ID == token.APIKeyID
13021293
})
1303-
if secretIdx != -1 && q.oauth2ProviderAppSecrets[secretIdx].AppID == arg.AppID &&
1304-
keyIdx != -1 && q.apiKeys[keyIdx].UserID == arg.UserID {
1294+
matches := secretIdx != -1 &&
1295+
q.oauth2ProviderAppSecrets[secretIdx].AppID == arg.AppID &&
1296+
keyIdx != -1 && q.apiKeys[keyIdx].UserID == arg.UserID
1297+
if matches {
13051298
keyIDsToDelete = append(keyIDsToDelete, token.APIKeyID)
1306-
} else {
1307-
tokens = append(tokens, token)
13081299
}
1309-
}
1310-
q.oauth2ProviderAppTokens = tokens
1300+
return matches
1301+
})
13111302

1312-
// Cascade delete into API keys.
1313-
var keys []database.APIKey
1314-
for _, key := range q.apiKeys {
1315-
if !slices.Contains(keyIDsToDelete, key.ID) {
1316-
keys = append(keys, key)
1317-
}
1318-
}
1319-
q.apiKeys = keys
1303+
// Cascade delete API keys linked to the deleted tokens.
1304+
q.apiKeys = slices.DeleteFunc(q.apiKeys, func(key database.APIKey) bool {
1305+
return slices.Contains(keyIDsToDelete, key.ID)
1306+
})
13201307

13211308
return nil
13221309
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy