You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.5 KiB
95 lines
2.5 KiB
package service |
|
|
|
import ( |
|
"context" |
|
|
|
"go-common/app/admin/main/upload/model" |
|
"go-common/library/log" |
|
) |
|
|
|
// ListBucket . |
|
func (s *Service) ListBucket(c context.Context, lbp *model.ListBucketParam) (bucketPage *model.BucketListPage, err error) { |
|
var ( |
|
buckets []*model.Bucket |
|
count int |
|
) |
|
if err = s.orm.Table("bucket").Order("id desc").Limit(lbp.PS).Offset((lbp.PN - 1) * lbp.PS).Find(&buckets).Error; err != nil { |
|
log.Error("read bucket error(%v)", err) |
|
return |
|
} |
|
if err = s.orm.Table("bucket").Count(&count).Error; err != nil { |
|
log.Error("bucket count error(%v)", err) |
|
err = nil |
|
} |
|
bucketPage = &model.BucketListPage{ |
|
Items: buckets, |
|
Page: &model.Page{ |
|
PS: lbp.PS, |
|
PN: lbp.PN, |
|
Total: count, |
|
}, |
|
} |
|
return |
|
} |
|
|
|
// ListPublicBucket . |
|
func (s *Service) ListPublicBucket(c context.Context, lbp *model.ListBucketParam) (bucketPage *model.BucketListPage, err error) { |
|
var ( |
|
buckets []*model.Bucket |
|
count int |
|
) |
|
if err = s.orm.Table("bucket").Order("id desc").Limit(lbp.PS).Offset((lbp.PN-1)*lbp.PS).Where("property != ? AND property != ?", model.PrivateRead, model.PrivateReadWrite).Find(&buckets).Error; err != nil { |
|
log.Error("read bucket error(%v)", err) |
|
return |
|
} |
|
if err = s.orm.Table("bucket").Count(&count).Error; err != nil { |
|
log.Error("bucket count error(%v)", err) |
|
err = nil |
|
} |
|
bucketPage = &model.BucketListPage{ |
|
Items: buckets, |
|
Page: &model.Page{ |
|
PS: lbp.PS, |
|
PN: lbp.PN, |
|
Total: count, |
|
}, |
|
} |
|
return |
|
} |
|
|
|
// AddBucket . |
|
func (s *Service) AddBucket(c context.Context, abp *model.AddBucketParam) (err error) { |
|
b := &model.Bucket{BucketName: abp.Name} |
|
if err = s.orm.Table("bucket").Where("bucket_name=?", abp.Name). |
|
Assign(map[string]interface{}{ |
|
"key_id": abp.KeyID, |
|
"key_secret": abp.KeySecret, |
|
"purge_cdn": abp.PurgeCDN, |
|
"property": abp.Property, |
|
"cache_control": abp.CacheControl, |
|
"domain": abp.Domain, |
|
}).FirstOrCreate(b).Error; err != nil { |
|
log.Error("Failed to add bucket (%+v): %v", b, err) |
|
return |
|
} |
|
return s.dao.CreateTable(context.Background(), abp.Name) |
|
} |
|
|
|
// DetailBucket . |
|
func (s *Service) DetailBucket(c context.Context, bucketName string) (bucket *model.Bucket, err error) { |
|
var ( |
|
limits []*model.DirLimit |
|
) |
|
bucket = &model.Bucket{} |
|
if err = s.orm.Table("bucket").Where("bucket_name = ?", bucketName).Find(bucket).Error; err != nil { |
|
return |
|
} |
|
if err = s.orm.Table("dir_limit").Where("bucket_name = ?", bucket.BucketName).Find(&limits).Error; err != nil { |
|
return |
|
} |
|
if len(limits) == 0 { |
|
return |
|
} |
|
bucket.DirLimit = limits |
|
return |
|
}
|
|
|