Files
devstar/services/devcontainer/devcontainer_secrets.go
hwy a1bc0c9187
Some checks failed
DevStar Studio Auto Test Pipeline / unit-frontend-test (pull_request) Failing after 1m34s
DevStar Studio Auto Test Pipeline / unit-backend-test (pull_request) Failing after 33s
DevStar Studio CI/CD Pipeline / build-and-push-x86-64-docker-image (pull_request) Successful in 7m21s
DevStar E2E Test / e2e-test (pull_request) Successful in 8m47s
devcontainer添加密匙
2025-12-16 13:49:22 +08:00

93 lines
2.4 KiB
Go

// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package devcontainer
import (
"context"
"code.gitea.io/gitea/models/db"
devcontainer_model "code.gitea.io/gitea/models/devcontainer"
secret_service "code.gitea.io/gitea/services/secrets"
)
func CreateSecret(ctx context.Context, ownerID, repoID int64, name, data, description string) (*devcontainer_model.DevcontainerSecret, error) {
if err := secret_service.ValidateName(name); err != nil {
return nil, err
}
return devcontainer_model.InsertEncryptedSecret(ctx, ownerID, repoID, name, data, description)
}
func CreateOrUpdateSecret(ctx context.Context, ownerID, repoID int64, name, data, description string) (*devcontainer_model.DevcontainerSecret, bool, error) {
if err := secret_service.ValidateName(name); err != nil {
return nil, false, err
}
s, err := db.Find[devcontainer_model.DevcontainerSecret](ctx, devcontainer_model.FindSecretsOpts{
OwnerID: ownerID,
RepoID: repoID,
Name: name,
})
if err != nil {
return nil, false, err
}
if len(s) == 0 {
s, err := devcontainer_model.InsertEncryptedSecret(ctx, ownerID, repoID, name, data, description)
if err != nil {
return nil, false, err
}
return s, true, nil
}
if err := devcontainer_model.UpdateSecret(ctx, s[0].ID, data, description); err != nil {
return nil, false, err
}
return s[0], false, nil
}
func DeleteSecretByID(ctx context.Context, ownerID, repoID, secretID int64) error {
s, err := db.Find[devcontainer_model.DevcontainerSecret](ctx, devcontainer_model.FindSecretsOpts{
OwnerID: ownerID,
RepoID: repoID,
SecretID: secretID,
})
if err != nil {
return err
}
if len(s) != 1 {
return devcontainer_model.ErrSecretNotFound{}
}
return deleteSecret(ctx, s[0])
}
func DeleteSecretByName(ctx context.Context, ownerID, repoID int64, name string) error {
if err := secret_service.ValidateName(name); err != nil {
return err
}
s, err := db.Find[devcontainer_model.DevcontainerSecret](ctx, devcontainer_model.FindSecretsOpts{
OwnerID: ownerID,
RepoID: repoID,
Name: name,
})
if err != nil {
return err
}
if len(s) != 1 {
return devcontainer_model.ErrSecretNotFound{}
}
return deleteSecret(ctx, s[0])
}
func deleteSecret(ctx context.Context, s *devcontainer_model.DevcontainerSecret) error {
if _, err := db.DeleteByID[devcontainer_model.DevcontainerSecret](ctx, s.ID); err != nil {
return err
}
return nil
}