Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
}


Loading