52 lines
879 B
Go
52 lines
879 B
Go
package models
|
|
|
|
import (
|
|
"log"
|
|
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var db *gorm.DB
|
|
|
|
// InitDB initializes the database connection
|
|
func InitDB() {
|
|
var err error
|
|
db, err = gorm.Open(sqlite.Open("project_dashboard.db"), &gorm.Config{})
|
|
if err != nil {
|
|
log.Fatal("Failed to connect to database:", err)
|
|
}
|
|
|
|
// Auto-migrate the schema
|
|
err = db.AutoMigrate(
|
|
&User{},
|
|
&Project{},
|
|
&ProjectMember{},
|
|
&Task{},
|
|
&Subtask{},
|
|
&Label{},
|
|
&Comment{},
|
|
&FileUpload{},
|
|
)
|
|
if err != nil {
|
|
log.Fatal("Failed to migrate database:", err)
|
|
}
|
|
|
|
log.Println("Database connected and migrated successfully")
|
|
}
|
|
|
|
// GetDB returns the database instance
|
|
func GetDB() *gorm.DB {
|
|
return db
|
|
}
|
|
|
|
// CloseDB closes the database connection
|
|
func CloseDB() {
|
|
sqlDB, err := db.DB()
|
|
if err != nil {
|
|
log.Printf("Error getting database instance: %v", err)
|
|
return
|
|
}
|
|
sqlDB.Close()
|
|
}
|