mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/1Panel-dev/1Panel.git
synced 2026-09-20 16:13:59 +08:00
84 lines
2.2 KiB
Go
84 lines
2.2 KiB
Go
package repo
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/1Panel-dev/1Panel/agent/app/model"
|
|
)
|
|
|
|
type AgentRepo struct{}
|
|
|
|
type IAgentRepo interface {
|
|
Page(page, size int, opts ...DBOption) (int64, []model.Agent, error)
|
|
GetFirst(opts ...DBOption) (*model.Agent, error)
|
|
Create(agent *model.Agent) error
|
|
Save(agent *model.Agent) error
|
|
DeleteByID(id uint) error
|
|
DeleteByAppInstallID(appInstallID uint) error
|
|
DeleteByAppInstallIDWithCtx(ctx context.Context, appInstallID uint) error
|
|
ClearWebsiteIDByWebsiteIDWithCtx(ctx context.Context, websiteID uint) error
|
|
List(opts ...DBOption) ([]model.Agent, error)
|
|
}
|
|
|
|
func NewIAgentRepo() IAgentRepo {
|
|
return &AgentRepo{}
|
|
}
|
|
|
|
func (a AgentRepo) Page(page, size int, opts ...DBOption) (int64, []model.Agent, error) {
|
|
var agents []model.Agent
|
|
db := getDb(opts...).Model(&model.Agent{})
|
|
count := int64(0)
|
|
db = db.Count(&count)
|
|
err := db.Limit(size).Offset(size * (page - 1)).Find(&agents).Error
|
|
return count, agents, err
|
|
}
|
|
|
|
func (a AgentRepo) GetFirst(opts ...DBOption) (*model.Agent, error) {
|
|
var agent model.Agent
|
|
if err := getDb(opts...).First(&agent).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &agent, nil
|
|
}
|
|
|
|
func (a AgentRepo) Create(agent *model.Agent) error {
|
|
return getDb().Create(agent).Error
|
|
}
|
|
|
|
func (a AgentRepo) Save(agent *model.Agent) error {
|
|
return getDb().Save(agent).Error
|
|
}
|
|
|
|
func (a AgentRepo) DeleteByID(id uint) error {
|
|
return getDb().Delete(&model.Agent{}, id).Error
|
|
}
|
|
|
|
func (a AgentRepo) DeleteByAppInstallID(appInstallID uint) error {
|
|
if appInstallID == 0 {
|
|
return nil
|
|
}
|
|
return getDb().Where("app_install_id = ?", appInstallID).Delete(&model.Agent{}).Error
|
|
}
|
|
|
|
func (a AgentRepo) DeleteByAppInstallIDWithCtx(ctx context.Context, appInstallID uint) error {
|
|
if appInstallID == 0 {
|
|
return nil
|
|
}
|
|
return getTx(ctx).Where("app_install_id = ?", appInstallID).Delete(&model.Agent{}).Error
|
|
}
|
|
|
|
func (a AgentRepo) ClearWebsiteIDByWebsiteIDWithCtx(ctx context.Context, websiteID uint) error {
|
|
if websiteID == 0 {
|
|
return nil
|
|
}
|
|
return getTx(ctx).Model(&model.Agent{}).Where("website_id = ?", websiteID).Update("website_id", 0).Error
|
|
}
|
|
|
|
func (a AgentRepo) List(opts ...DBOption) ([]model.Agent, error) {
|
|
var agents []model.Agent
|
|
if err := getDb(opts...).Find(&agents).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return agents, nil
|
|
}
|