package main import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" ) // Define the Box model type Box struct { gorm.Model Name string `json:"name"` } // Define the Item model type Item struct { gorm.Model Name string `json:"name"` Description string `json:"description"` BoxID uint `json:"box_id"` ImagePath string `json:"image_path"` } // Define the User model type User struct { gorm.Model Username string `json:"username"` Password string `json:"password"` Email string `json:"email"` } func ConnectDB(dbPath string) (*gorm.DB, error) { db, err := gorm.Open("sqlite3", dbPath) if err != nil { return nil, fmt.Errorf("failed to connect to database: %v", err) } // set auto_vacuum mode to ON // this automagically removes old rows from the database when idle db.Exec("PRAGMA auto_vacuum = ON;") // AutoMigrate will create the tables if they don't exist db.AutoMigrate(&Box{}, &Item{}, &User{}) return db, nil }