code.gitea.io/gitea@v1.22.3/services/secrets/secrets.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package secrets 5 6 import ( 7 "context" 8 9 "code.gitea.io/gitea/models/db" 10 secret_model "code.gitea.io/gitea/models/secret" 11 ) 12 13 func CreateOrUpdateSecret(ctx context.Context, ownerID, repoID int64, name, data string) (*secret_model.Secret, bool, error) { 14 if err := ValidateName(name); err != nil { 15 return nil, false, err 16 } 17 18 s, err := db.Find[secret_model.Secret](ctx, secret_model.FindSecretsOptions{ 19 OwnerID: ownerID, 20 RepoID: repoID, 21 Name: name, 22 }) 23 if err != nil { 24 return nil, false, err 25 } 26 27 if len(s) == 0 { 28 s, err := secret_model.InsertEncryptedSecret(ctx, ownerID, repoID, name, data) 29 if err != nil { 30 return nil, false, err 31 } 32 return s, true, nil 33 } 34 35 if err := secret_model.UpdateSecret(ctx, s[0].ID, data); err != nil { 36 return nil, false, err 37 } 38 39 return s[0], false, nil 40 } 41 42 func DeleteSecretByID(ctx context.Context, ownerID, repoID, secretID int64) error { 43 s, err := db.Find[secret_model.Secret](ctx, secret_model.FindSecretsOptions{ 44 OwnerID: ownerID, 45 RepoID: repoID, 46 SecretID: secretID, 47 }) 48 if err != nil { 49 return err 50 } 51 if len(s) != 1 { 52 return secret_model.ErrSecretNotFound{} 53 } 54 55 return deleteSecret(ctx, s[0]) 56 } 57 58 func DeleteSecretByName(ctx context.Context, ownerID, repoID int64, name string) error { 59 if err := ValidateName(name); err != nil { 60 return err 61 } 62 63 s, err := db.Find[secret_model.Secret](ctx, secret_model.FindSecretsOptions{ 64 OwnerID: ownerID, 65 RepoID: repoID, 66 Name: name, 67 }) 68 if err != nil { 69 return err 70 } 71 if len(s) != 1 { 72 return secret_model.ErrSecretNotFound{} 73 } 74 75 return deleteSecret(ctx, s[0]) 76 } 77 78 func deleteSecret(ctx context.Context, s *secret_model.Secret) error { 79 if _, err := db.DeleteByID[secret_model.Secret](ctx, s.ID); err != nil { 80 return err 81 } 82 return nil 83 }