Skip to content
Open
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,84 @@
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) {
// TODO: Implement database connection
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
return nil, err
}
err = db.AutoMigrate(&User{}) //自动迁移功能
return db, err
}

// CreateUser creates a new user in the database
func CreateUser(db *gorm.DB, user *User) error {
// TODO: Implement user creation
result := db.Create(user)
return result.Error
}

// GetUserByID retrieves a user by their ID
func GetUserByID(db *gorm.DB, id uint) (*User, error) {
// TODO: Implement user retrieval by ID
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) {
// TODO: Implement retrieval of all users
var users []User
result := db.Find(&users)
return users, result.Error
}

// UpdateUser updates an existing user's information
func UpdateUser(db *gorm.DB, user *User) error {
// Only update mutable fields; return error if user not found
res := db.Model(&User{}).Where("id = ?", user.ID).Updates(map[string]interface{}{
"name": user.Name,
"age": user.Age,
})
if res.Error != nil {
return res.Error
}
if res.RowsAffected == 0 {
return gorm.ErrRecordNotFound
}
return nil
}

// DeleteUser removes a user from the database
func DeleteUser(db *gorm.DB, id uint) error {
// TODO: Implement user deletion
result := db.Delete(&User{}, id)
if result.Error != nil {
return result.Error
}
if result.RowsAffected == 0 {
return gorm.ErrRecordNotFound
}
return result.Error
}
Loading