Files
kra-new/internal/data/business/platform.go
T

46 lines
1.2 KiB
Go

package business
import (
"context"
"errors"
"gorm.io/gorm"
"kra/internal/biz/business"
)
type PlatformProvider interface {
Database(string) (*gorm.DB, error)
}
type platformAccountRepo struct{ data PlatformProvider }
func NewPlatformAccountRepo(data PlatformProvider) business.PlatformAccountRepo {
return &platformAccountRepo{data: data}
}
type platformAccountPO struct {
ID uint64
Account, Password string
Status int
}
func (platformAccountPO) TableName() string { return "tab_promote_business" }
func (r *platformAccountRepo) FindByAccount(ctx context.Context, source, account string) (*business.PlatformAccount, error) {
source, err := business.NormalizePlatform(source)
if err != nil {
return nil, err
}
db, err := r.data.Database(source)
if err != nil || db == nil {
return nil, business.ErrPlatformUnavailable
}
var po platformAccountPO
err = db.WithContext(ctx).Where("account = ?", account).First(&po).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
if err != nil {
return nil, business.ErrPlatformUnavailable
}
return &business.PlatformAccount{ID: po.ID, Account: po.Account, Password: po.Password, Status: po.Status}, nil
}