12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package repository
- import (
- "context"
- "errors"
- "fmt"
- "github.com/go-nunu/nunu-layout-advanced/internal/model"
- "gorm.io/gorm"
- )
- type GatewayGroupRepository interface {
- GetGatewayGroup(ctx context.Context, id int64) (*model.GatewayGroup, error)
- AddGatewayGroup(ctx context.Context, req *model.GatewayGroup) error
- EditGatewayGroup(ctx context.Context, req *model.GatewayGroup) error
- DeleteGatewayGroup(ctx context.Context, req *model.GatewayGroup) error
- GetGatewayGroupWhereHostIdNull(ctx context.Context,operator int, count int) (int, error)
- GetGatewayGroupByHostId(ctx context.Context, hostId int64) (*[]model.GatewayGroup, error)
- }
- func NewGatewayGroupRepository(
- repository *Repository,
- ) GatewayGroupRepository {
- return &gatewayGroupRepository{
- Repository: repository,
- }
- }
- type gatewayGroupRepository struct {
- *Repository
- }
- func (r *gatewayGroupRepository) GetGatewayGroup(ctx context.Context, id int64) (*model.GatewayGroup, error) {
- var gatewayGroup model.GatewayGroup
- return &gatewayGroup, nil
- }
- func (r *gatewayGroupRepository) AddGatewayGroup(ctx context.Context, req *model.GatewayGroup) error {
- if err := r.DB(ctx).Create(req).Error; err != nil {
- return err
- }
- return nil
- }
- func (r *gatewayGroupRepository) EditGatewayGroup(ctx context.Context, req *model.GatewayGroup) error {
- if err := r.DB(ctx).Model(&model.GatewayGroup{}).Where("rule_id = ?", req.RuleId).Updates(req).Error; err != nil {
- return err
- }
- return nil
- }
- func (r *gatewayGroupRepository) DeleteGatewayGroup(ctx context.Context, req *model.GatewayGroup) error {
- if err := r.DB(ctx).Model(&model.GatewayGroup{}).Where("id = ?", req.Id).Delete(req).Error; err != nil {
- return err
- }
- return nil
- }
- func (r *gatewayGroupRepository) GetGatewayGroupWhereHostIdNull(ctx context.Context,operator int, count int) (int, error) {
- var id int
- subQuery := r.DB(ctx).Model(&model.GateWayGroupIp{}).
- Select("gateway_group_id").
- Group("gateway_group_id").
- Having("COUNT(*) = ?", count)
- err := r.DB(ctx).Model(&model.GatewayGroup{}).
- Where("operator = ?", operator).
- Where("id IN (?)", subQuery).
- Where("host_id = ?", 0).
- Select("rule_id").First(&id).Error
- if err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound){
- return 0, fmt.Errorf("库存不足,请联系客服补充网关组库存")
- }
- return 0, err
- }
- return id, nil
- }
- func (r *gatewayGroupRepository) GetGatewayGroupByHostId(ctx context.Context, hostId int64) (*[]model.GatewayGroup, error) {
- res := []model.GatewayGroup{}
- if err := r.DB(ctx).Where("host_id = ?", hostId).Find(&res).Error; err != nil {
- return nil, err
- }
- return &res, nil
- }
|