database.go 694 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package database
  2. import (
  3. "log"
  4. "os"
  5. "path/filepath"
  6. "filecloud/internal/model"
  7. "gorm.io/driver/sqlite"
  8. "gorm.io/gorm"
  9. )
  10. var DB *gorm.DB
  11. // InitDB initializes the database connection
  12. func InitDB() error {
  13. // Create data directory if it doesn't exist
  14. dataDir := filepath.Join("data")
  15. if err := os.MkdirAll(dataDir, 0755); err != nil {
  16. return err
  17. }
  18. dbPath := filepath.Join(dataDir, "filecloud.db")
  19. db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
  20. if err != nil {
  21. return err
  22. }
  23. // Auto migrate the schema
  24. err = db.AutoMigrate(&model.File{}, &model.User{})
  25. if err != nil {
  26. return err
  27. }
  28. DB = db
  29. log.Println("Database initialized successfully")
  30. return nil
  31. }