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() }