62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
|
package service
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"sync"
|
||
|
|
||
|
"go-common/app/admin/main/appstatic/conf"
|
||
|
"go-common/app/admin/main/appstatic/dao"
|
||
|
"go-common/library/log"
|
||
|
|
||
|
"github.com/jinzhu/gorm"
|
||
|
)
|
||
|
|
||
|
// Service biz service def.
|
||
|
type Service struct {
|
||
|
c *conf.Config
|
||
|
dao *dao.Dao
|
||
|
DB *gorm.DB
|
||
|
waiter *sync.WaitGroup
|
||
|
daoClosed bool // logic close the dao's DB
|
||
|
MaxSize int64 // max size supported for the file to upload
|
||
|
}
|
||
|
|
||
|
// New new a Service and return.
|
||
|
func New(c *conf.Config) (s *Service) {
|
||
|
s = &Service{
|
||
|
c: c,
|
||
|
dao: dao.New(c),
|
||
|
daoClosed: false,
|
||
|
waiter: new(sync.WaitGroup),
|
||
|
}
|
||
|
s.DB = s.dao.DB
|
||
|
if s.c.Cfg.Storage == "nas" {
|
||
|
s.MaxSize = 200 * 1024 * 1024 // 200M NAS
|
||
|
} else {
|
||
|
s.MaxSize = 20 * 1024 * 1024 // 20M BFS
|
||
|
}
|
||
|
return s
|
||
|
}
|
||
|
|
||
|
// Ping check dao health.
|
||
|
func (s *Service) Ping(c context.Context) (err error) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// Wait wait all closed.
|
||
|
func (s *Service) Wait() {
|
||
|
if s.dao != nil {
|
||
|
s.daoClosed = true
|
||
|
log.Info("Dao is logically closed!")
|
||
|
}
|
||
|
log.Info("Wait waiter!")
|
||
|
s.waiter.Wait()
|
||
|
}
|
||
|
|
||
|
// Close close all dao.
|
||
|
func (s *Service) Close() {
|
||
|
log.Info("Close Dao physically!")
|
||
|
s.dao.Close()
|
||
|
log.Info("Service Closed!")
|
||
|
}
|