Files
ayatori/internal/database/adapter/kubernetes/binding_mapping.go
T
panxiao81 7834cab97f
Verify / test (pull_request) Successful in 13m29s
Verify / lint (pull_request) Successful in 14m13s
Verify / database-integration (pull_request) Successful in 15m48s
refactor: 集中显式注入并归位凭据领域规则
2026-09-27 19:16:48 +00:00

54 lines
2.2 KiB
Go

package kubernetes
import (
databasev1alpha1 "git.ddupan.top/panxiao81/ayatori/api/database/v1alpha1"
"git.ddupan.top/panxiao81/ayatori/internal/database/application"
"git.ddupan.top/panxiao81/ayatori/internal/database/domain/binding"
"k8s.io/apimachinery/pkg/types"
)
func bindingTenant(object *databasev1alpha1.PostgreSQLTenant) *application.BindingTenant {
tenant := &application.BindingTenant{
Revision: object.ResourceVersion, Generation: object.Generation,
}
tenant.Tenant = binding.Tenant{
Identity: binding.TenantIdentity{Namespace: object.Namespace, Name: object.Name, UID: string(object.UID)},
Phase: object.Status.Phase, Deleting: !object.DeletionTimestamp.IsZero(),
}
if request := object.Spec.Provision; request != nil {
tenant.Request.Provision = &binding.ProvisionRequest{
Instance: string(request.InstanceRef.Name), Database: string(request.Database), LoginRole: string(request.LoginRole),
}
}
if object.Spec.DatabaseRef != nil {
tenant.Request.ExistingDatabase = string(object.Spec.DatabaseRef.Name)
}
if ref := object.Status.DatabaseRef; ref != nil {
tenant.Database = &binding.Identity{Name: string(ref.Name), UID: string(ref.UID)}
}
return tenant
}
func bindingDatabase(object *databasev1alpha1.PostgreSQLDatabase) *application.BindingDatabase {
database := &application.BindingDatabase{
Revision: object.ResourceVersion,
}
database.Database = binding.Database{
Identity: binding.Identity{Name: object.Name, UID: string(object.UID)},
Instance: string(object.Spec.InstanceRef.Name), InstanceUID: string(object.Status.InstanceUID),
Name: string(object.Spec.Database), LoginRole: string(object.Spec.LoginRole), Source: object.Spec.Source,
Phase: object.Status.Phase, Deleting: !object.DeletionTimestamp.IsZero(),
Ready: currentReady(object.Generation, object.Status.Conditions),
}
if ref := object.Spec.TenantRef; ref != nil {
database.Tenant = &binding.TenantIdentity{Namespace: ref.Namespace, Name: string(ref.Name), UID: string(ref.UID)}
}
return database
}
func tenantReference(tenant binding.TenantIdentity) *databasev1alpha1.TenantReference {
return &databasev1alpha1.TenantReference{
Namespace: tenant.Namespace, Name: databasev1alpha1.ObjectName(tenant.Name), UID: types.UID(tenant.UID),
}
}