Files
ayatori/internal/database/adapter/openbao/credential_store.go
T
panxiao81 35ada6d7eb
Verify / test (pull_request) Successful in 11m23s
Verify / lint (pull_request) Successful in 12m18s
Verify / database-integration (pull_request) Successful in 13m49s
feat: 接通 Database 凭据准备闭环
2026-09-27 18:35:13 +00:00

39 lines
1.2 KiB
Go

package openbao
import (
"context"
"git.ddupan.top/panxiao81/ayatori/internal/database/application"
)
var _ application.CredentialStore = (*Credentials)(nil)
func (c *Credentials) ProvisionLocation(uid string) (application.CredentialLocation, error) {
path, err := c.ProvisionPath(uid)
if err != nil {
return application.CredentialLocation{}, err
}
return application.CredentialLocation{Mount: c.mount, Path: path}, nil
}
func (c *Credentials) ReadCredential(ctx context.Context, location application.CredentialLocation, version int64) (application.ApplicationCredential, error) {
if location.Mount != c.mount {
return application.ApplicationCredential{}, ErrInvalidLocation
}
if version == 0 {
return c.Read(ctx, location.Path)
}
return c.ReadConfirmed(ctx, location.Path, version)
}
func (c *Credentials) CreateCredential(ctx context.Context, location application.CredentialLocation, credential application.ApplicationCredential) (int64, error) {
if location.Mount != c.mount {
return 0, ErrInvalidLocation
}
if err := c.Create(ctx, location.Path, credential); err != nil {
return 0, err
}
// Create 的合同是 CAS=0 且回读版本 1 和七键完全一致。
return 1, nil
}