main.go
⎇
Raw
1package main
2
3import (
4 "fmt"
5 "log"
6 "os"
7
8 "vidarchive/internal/config"
9 "vidarchive/internal/database"
10 "vidarchive/internal/handler"
11 "vidarchive/internal/repository"
12 "vidarchive/internal/server"
13 "vidarchive/internal/service"
14 "vidarchive/internal/worker"
15)
16
17func main() {
18 cfg := config.New()
19
20 if err := os.MkdirAll(cfg.DataDir, 0755); err != nil {
21 log.Fatalf("Failed to create data dir: %v", err)
22 }
23 if err := os.MkdirAll(cfg.LibraryDir, 0755); err != nil {
24 log.Fatalf("Failed to create library dir: %v", err)
25 }
26 if err := os.MkdirAll(cfg.TempDir, 0755); err != nil {
27 log.Fatalf("Failed to create temp dir: %v", err)
28 }
29
30 db, err := database.New(cfg)
31 if err != nil {
32 log.Fatalf("Failed to initialize database: %v", err)
33 }
34 defer db.Close()
35
36 presetRepo := repository.NewPresetRepository(db)
37 downloadRepo := repository.NewDownloadRepository(db)
38 settingsRepo := repository.NewSettingsRepository(db)
39
40 presetSvc := service.NewPresetService(presetRepo)
41 librarySvc := service.NewLibraryService(cfg.LibraryDir, cfg.TempDir)
42 settingsSvc := service.NewSettingsService(settingsRepo)
43 downloadSvc := service.NewDownloadService(downloadRepo, librarySvc, presetSvc, settingsSvc, cfg)
44
45 workerPool := worker.New(downloadSvc, cfg.Workers)
46 workerPool.Start()
47 defer workerPool.Stop()
48
49 h, err := handler.New(cfg, presetSvc, downloadSvc, librarySvc, settingsSvc, workerPool)
50 if err != nil {
51 log.Fatalf("Failed to initialize handler: %v", err)
52 }
53
54 srv := server.New(cfg, h)
55
56 fmt.Printf("VidArchive starting...\n")
57 fmt.Printf("Data directory: %s\n", cfg.DataDir)
58 fmt.Printf("Library directory: %s\n", cfg.LibraryDir)
59 fmt.Printf("Temp directory: %s\n", cfg.TempDir)
60
61 if err := srv.Start(); err != nil {
62 log.Fatalf("Server error: %v", err)
63 }
64}
65