weiro/services/services.go

55 lines
1.4 KiB
Go

package services
import (
"path/filepath"
"lmika.dev/lmika/weiro/config"
"lmika.dev/lmika/weiro/providers/db"
"lmika.dev/lmika/weiro/providers/uploadfiles"
"lmika.dev/lmika/weiro/services/auth"
"lmika.dev/lmika/weiro/services/posts"
"lmika.dev/lmika/weiro/services/publisher"
"lmika.dev/lmika/weiro/services/sites"
"lmika.dev/lmika/weiro/services/uploads"
)
type Services struct {
DB *db.Provider
Auth *auth.Service
Publisher *publisher.Publisher
PublisherQueue *publisher.Queue
Posts *posts.Service
Sites *sites.Service
Uploads *uploads.Service
}
func New(cfg config.Config) (*Services, error) {
dbp, err := db.New(filepath.Join(cfg.DataDir, "weiro.db"))
if err != nil {
return nil, err
}
ufp := uploadfiles.New(filepath.Join(cfg.DataDir, "uploads"))
authSvc := auth.New(dbp)
publisherSvc := publisher.New(dbp, ufp)
publisherQueue := publisher.NewQueue(publisherSvc)
postService := posts.New(dbp, publisherQueue)
siteService := sites.New(dbp)
uploadService := uploads.New(dbp, ufp, filepath.Join(cfg.ScratchDir, "uploads", "pending"))
return &Services{
DB: dbp,
Auth: authSvc,
Publisher: publisherSvc,
PublisherQueue: publisherQueue,
Posts: postService,
Sites: siteService,
Uploads: uploadService,
}, nil
}
func (s *Services) Close() error {
return s.DB.Close()
}