Skip to content

Commit c1c3983

Browse files
Add solution for gorm challenge-1-crud-operations (#842)
Co-authored-by: go-interview-practice-bot[bot] <230190823+go-interview-practice-bot[bot]@users.noreply.github.com>
1 parent 7b8b26a commit c1c3983

File tree

1 file changed

+77
-0
lines changed
  • packages/gorm/challenge-1-crud-operations/submissions/aswinsreeraj

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package main
2+
3+
import (
4+
"time"
5+
6+
"gorm.io/gorm"
7+
"gorm.io/driver/sqlite"
8+
)
9+
10+
// User represents a user in the system
11+
type User struct {
12+
ID uint `gorm:"primaryKey"`
13+
Name string `gorm:"not null"`
14+
Email string `gorm:"unique;not null"`
15+
Age int `gorm:"check:age > 0"`
16+
CreatedAt time.Time
17+
UpdatedAt time.Time
18+
}
19+
20+
// ConnectDB establishes a connection to the SQLite database
21+
func ConnectDB() (*gorm.DB, error) {
22+
// TODO: Implement database connection
23+
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
24+
if err != nil {
25+
return nil, err
26+
}
27+
err = db.AutoMigrate(&User{})
28+
return db, err
29+
}
30+
31+
// CreateUser creates a new user in the database
32+
func CreateUser(db *gorm.DB, user *User) error {
33+
// TODO: Implement user creation
34+
result := db.Create(&user)
35+
return result.Error
36+
}
37+
38+
// GetUserByID retrieves a user by their ID
39+
func GetUserByID(db *gorm.DB, id uint) (*User, error) {
40+
// TODO: Implement user retrieval by ID
41+
var user User
42+
result := db.First(&user, id)
43+
return &user, result.Error
44+
}
45+
46+
// GetAllUsers retrieves all users from the database
47+
func GetAllUsers(db *gorm.DB) ([]User, error) {
48+
// TODO: Implement retrieval of all users
49+
var users []User
50+
result := db.Find(&users)
51+
return users, result.Error
52+
}
53+
54+
// UpdateUser updates an existing user's information
55+
func UpdateUser(db *gorm.DB, user *User) error {
56+
// TODO: Implement user update
57+
var user2 User
58+
result := db.First(&user2)
59+
if result.RowsAffected == 0 {
60+
return result.Error
61+
} else {
62+
return db.Save(&user).Error
63+
}
64+
return result.Error
65+
}
66+
67+
// DeleteUser removes a user from the database
68+
func DeleteUser(db *gorm.DB, id uint) error {
69+
// TODO: Implement user deletion
70+
var user2 User
71+
result := db.First(&user2, id)
72+
if result.RowsAffected == 0 {
73+
return result.Error
74+
}
75+
result = db.Delete(&User{}, id)
76+
return result.Error
77+
}

0 commit comments

Comments
 (0)