From aabfab306b6cd036f5311efdae9322435a166a4d Mon Sep 17 00:00:00 2001 From: "go-interview-practice-bot[bot]" <230190823+go-interview-practice-bot[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 21:40:33 +0000 Subject: [PATCH] Add solution for gorm challenge-1-crud-operations --- .../submissions/orsenthil/solution.go | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 packages/gorm/challenge-1-crud-operations/submissions/orsenthil/solution.go diff --git a/packages/gorm/challenge-1-crud-operations/submissions/orsenthil/solution.go b/packages/gorm/challenge-1-crud-operations/submissions/orsenthil/solution.go new file mode 100644 index 00000000..9f7c2004 --- /dev/null +++ b/packages/gorm/challenge-1-crud-operations/submissions/orsenthil/solution.go @@ -0,0 +1,91 @@ +package main + +import ( + "time" + + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +// User represents a user in the system +type User struct { + ID uint `gorm:"primaryKey"` + Name string `gorm:"not null"` + Email string `gorm:"unique;not null"` + Age int `gorm:"check:age > 0"` + CreatedAt time.Time + UpdatedAt time.Time +} + +// ConnectDB establishes a connection to the SQLite database +func ConnectDB() (*gorm.DB, error) { + db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{}) + if err != nil { + return nil, err + } + + // Auto-migrate the User model + err = db.AutoMigrate(&User{}) + if err != nil { + return nil, err + } + + return db, nil +} + +// CreateUser creates a new user in the database +func CreateUser(db *gorm.DB, user *User) error { + result := db.Create(user) + return result.Error +} + +// GetUserByID retrieves a user by their ID +func GetUserByID(db *gorm.DB, id uint) (*User, error) { + var user User + result := db.First(&user, id) + if result.Error != nil { + return nil, result.Error + } + return &user, nil +} + +// GetAllUsers retrieves all users from the database +func GetAllUsers(db *gorm.DB) ([]User, error) { + var users []User + result := db.Find(&users) + if result.Error != nil { + return nil, result.Error + } + return users, nil +} + +// UpdateUser updates an existing user's information +func UpdateUser(db *gorm.DB, user *User) error { + // First check if the user exists + var existingUser User + result := db.First(&existingUser, user.ID) + if result.Error != nil { + return result.Error + } + + // Now update the user + result = db.Save(user) + return result.Error +} + +// DeleteUser removes a user from the database +func DeleteUser(db *gorm.DB, id uint) error { + result := db.Delete(&User{}, id) + if result.Error != nil { + return result.Error + } + + // Check if any rows were affected + if result.RowsAffected == 0 { + return gorm.ErrRecordNotFound + } + + return nil +} + +