package app import ( "log" "net/http" "path/filepath" "time" "yoresee_dropbox/internal/scanner" "yoresee_dropbox/internal/server" "yoresee_dropbox/internal/store" ) type Config struct { Addr string Workspace string Token string } func NewHandler(cfg Config) (http.Handler, *store.Store, error) { dbPath := filepath.Join(cfg.Workspace, ".ydropbox", "db.sqlite") s, err := store.Open(dbPath) if err != nil { return nil, nil, err } sc := scanner.New(s, cfg.Workspace, 10*time.Second) sc.Start() srv := server.New(s, cfg.Token, cfg.Workspace) return srv.Handler(), s, nil } func Run(cfg Config) error { handler, s, err := NewHandler(cfg) if err != nil { return err } defer s.Close() log.Printf("Listening on %s", cfg.Addr) return http.ListenAndServe(cfg.Addr, handler) }