143 lines
3.2 KiB
Go
143 lines
3.2 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"next-terminal/server/model"
|
|
)
|
|
|
|
var DatabaseAssetRepository = new(databaseAssetRepository)
|
|
|
|
type databaseAssetRepository struct {
|
|
baseRepository
|
|
}
|
|
|
|
func (r databaseAssetRepository) FindAll(c context.Context) (o []model.DatabaseAsset, err error) {
|
|
err = r.GetDB(c).Order("name asc").Find(&o).Error
|
|
return
|
|
}
|
|
|
|
func (r databaseAssetRepository) FindByType(c context.Context, dbType string) (o []model.DatabaseAsset, err error) {
|
|
db := r.GetDB(c)
|
|
if dbType != "" {
|
|
db = db.Where("type = ?", dbType)
|
|
}
|
|
err = db.Order("name asc").Find(&o).Error
|
|
return
|
|
}
|
|
|
|
func (r databaseAssetRepository) Find(c context.Context, pageIndex, pageSize int, name, dbType, order, field string) (o []model.DatabaseAsset, total int64, err error) {
|
|
db := r.GetDB(c).Model(&model.DatabaseAsset{})
|
|
|
|
if len(name) > 0 {
|
|
db = db.Where("name like ?", "%"+name+"%")
|
|
}
|
|
|
|
if len(dbType) > 0 {
|
|
db = db.Where("type = ?", dbType)
|
|
}
|
|
|
|
err = db.Count(&total).Error
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if order == "" {
|
|
order = "asc"
|
|
}
|
|
if field == "" {
|
|
field = "name"
|
|
}
|
|
|
|
orderBy := field + " " + order
|
|
if field == "created" {
|
|
orderBy = "created " + order
|
|
}
|
|
|
|
err = db.Order(orderBy).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&o).Error
|
|
return
|
|
}
|
|
|
|
func (r databaseAssetRepository) FindById(c context.Context, id string) (o model.DatabaseAsset, err error) {
|
|
err = r.GetDB(c).Where("id = ?", id).First(&o).Error
|
|
return
|
|
}
|
|
|
|
func (r databaseAssetRepository) Create(c context.Context, o *model.DatabaseAsset) error {
|
|
return r.GetDB(c).Create(o).Error
|
|
}
|
|
|
|
func (r databaseAssetRepository) UpdateById(c context.Context, o *model.DatabaseAsset) error {
|
|
return r.GetDB(c).Updates(o).Error
|
|
}
|
|
|
|
func (r databaseAssetRepository) DeleteById(c context.Context, id string) error {
|
|
return r.GetDB(c).Where("id = ?", id).Delete(&model.DatabaseAsset{}).Error
|
|
}
|
|
|
|
func (r databaseAssetRepository) Count(c context.Context) (total int64, err error) {
|
|
err = r.GetDB(c).Model(&model.DatabaseAsset{}).Count(&total).Error
|
|
return
|
|
}
|
|
|
|
func (r databaseAssetRepository) FindAllTags(c context.Context) (o []string, err error) {
|
|
var assets []model.DatabaseAsset
|
|
err = r.GetDB(c).Select("tags").Find(&assets).Error
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
tagSet := make(map[string]bool)
|
|
for _, asset := range assets {
|
|
if asset.Tags == "" {
|
|
continue
|
|
}
|
|
tags := strings.Split(asset.Tags, ",")
|
|
for _, tag := range tags {
|
|
tag = strings.TrimSpace(tag)
|
|
if tag != "" {
|
|
tagSet[tag] = true
|
|
}
|
|
}
|
|
}
|
|
|
|
for tag := range tagSet {
|
|
o = append(o, tag)
|
|
}
|
|
return
|
|
}
|
|
|
|
func (r databaseAssetRepository) ParseTags(tags string) []string {
|
|
if tags == "" {
|
|
return nil
|
|
}
|
|
return strings.Split(tags, ",")
|
|
}
|
|
|
|
func (r databaseAssetRepository) FormatTags(tags []string) string {
|
|
if len(tags) == 0 {
|
|
return ""
|
|
}
|
|
return strings.Join(tags, ",")
|
|
}
|
|
|
|
func (r databaseAssetRepository) GetDBPort(dbType string) int {
|
|
switch dbType {
|
|
case "mysql":
|
|
return 3306
|
|
case "pg":
|
|
return 5432
|
|
case "sqlserver":
|
|
return 1433
|
|
case "oracle":
|
|
return 1521
|
|
default:
|
|
return 3306
|
|
}
|
|
}
|
|
|
|
func (r databaseAssetRepository) UpdateOwner(c context.Context, ownerId string, newOwnerId string) error {
|
|
return r.GetDB(c).Model(&model.DatabaseAsset{}).Where("owner = ?", ownerId).Update("owner", newOwnerId).Error
|
|
}
|