mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-12-19 05:49:02 +08:00
106 lines
2.8 KiB
Go
106 lines
2.8 KiB
Go
package repo
|
|
|
|
import (
|
|
"github.com/1Panel-dev/1Panel/agent/app/model"
|
|
"github.com/1Panel-dev/1Panel/agent/global"
|
|
)
|
|
|
|
type LauncherRepo struct{}
|
|
|
|
type ILauncherRepo interface {
|
|
Get(opts ...DBOption) (model.AppLauncher, error)
|
|
ListName(opts ...DBOption) ([]string, error)
|
|
Create(launcher *model.AppLauncher) error
|
|
Save(launcher *model.AppLauncher) error
|
|
Delete(opts ...DBOption) error
|
|
|
|
GetQuickJump(opts ...DBOption) (model.QuickJump, error)
|
|
ListQuickJump(withAll bool) []model.QuickJump
|
|
UpdateQuicks(quicks []model.QuickJump) error
|
|
}
|
|
|
|
func NewILauncherRepo() ILauncherRepo {
|
|
return &LauncherRepo{}
|
|
}
|
|
|
|
func (u *LauncherRepo) Get(opts ...DBOption) (model.AppLauncher, error) {
|
|
var launcher model.AppLauncher
|
|
db := global.DB
|
|
for _, opt := range opts {
|
|
db = opt(db)
|
|
}
|
|
err := db.First(&launcher).Error
|
|
return launcher, err
|
|
}
|
|
func (u *LauncherRepo) ListName(opts ...DBOption) ([]string, error) {
|
|
var ops []model.AppLauncher
|
|
db := global.DB.Model(&model.AppLauncher{})
|
|
for _, opt := range opts {
|
|
db = opt(db)
|
|
}
|
|
_ = db.Find(&ops).Error
|
|
var names []string
|
|
for i := 0; i < len(ops); i++ {
|
|
names = append(names, ops[i].Key)
|
|
}
|
|
return names, nil
|
|
}
|
|
|
|
func (u *LauncherRepo) Create(launcher *model.AppLauncher) error {
|
|
return global.DB.Create(launcher).Error
|
|
}
|
|
|
|
func (u *LauncherRepo) Save(launcher *model.AppLauncher) error {
|
|
return global.DB.Save(launcher).Error
|
|
}
|
|
|
|
func (u *LauncherRepo) Delete(opts ...DBOption) error {
|
|
db := global.DB
|
|
for _, opt := range opts {
|
|
db = opt(db)
|
|
}
|
|
return db.Delete(&model.AppLauncher{}).Error
|
|
}
|
|
|
|
func (u *LauncherRepo) GetQuickJump(opts ...DBOption) (model.QuickJump, error) {
|
|
var launcher model.QuickJump
|
|
db := global.DB
|
|
for _, opt := range opts {
|
|
db = opt(db)
|
|
}
|
|
err := db.First(&launcher).Error
|
|
return launcher, err
|
|
}
|
|
func (u *LauncherRepo) ListQuickJump(withAll bool) []model.QuickJump {
|
|
var quicks []model.QuickJump
|
|
if withAll {
|
|
_ = global.DB.Find(&quicks).Error
|
|
} else {
|
|
_ = global.DB.Where("is_show = ?", true).Find(&quicks).Error
|
|
}
|
|
if !withAll && len(quicks) == 0 {
|
|
return []model.QuickJump{
|
|
{Name: "Website", Title: "menu.website", Recommend: 10, IsShow: true, Router: "/websites"},
|
|
{Name: "Database", Title: "menu.database", Recommend: 30, IsShow: true, Router: "/databases"},
|
|
{Name: "Cronjob", Title: "menu.cronjob", Recommend: 50, IsShow: true, Router: "/cronjobs"},
|
|
{Name: "AppInstalled", Title: "home.appInstalled", Recommend: 70, IsShow: true, Router: "/apps/installed"},
|
|
}
|
|
}
|
|
|
|
return quicks
|
|
}
|
|
func (u *LauncherRepo) UpdateQuicks(quicks []model.QuickJump) error {
|
|
tx := global.DB.Begin()
|
|
for _, item := range quicks {
|
|
if err := tx.Model(&model.QuickJump{}).Where("id = ?", item.ID).Updates(map[string]interface{}{
|
|
"is_show": item.IsShow,
|
|
"detail": item.Detail,
|
|
"alias": item.Alias,
|
|
}).Error; err != nil {
|
|
tx.Rollback()
|
|
return err
|
|
}
|
|
}
|
|
tx.Commit()
|
|
return nil
|
|
}
|