package dao import ( "opencatd-open/internal/store" "gorm.io/gorm" ) type UserDAO struct { db *gorm.DB } func NewUserDAO(db *gorm.DB) *UserDAO { return &UserDAO{db: db} } func (d *UserDAO) Create(user *store.User) error { return d.db.Create(user).Error } func (d *UserDAO) GetByID(id uint64) (*store.User, error) { var user store.User err := d.db.First(&user, id).Error if err != nil { return nil, err } return &user, nil } func (d *UserDAO) GetByUsername(username string) (*store.User, error) { var user store.User err := d.db.Where("username = ?", username).First(&user).Error if err != nil { return nil, err } return &user, nil } func (d *UserDAO) GetByEmail(email string) (*store.User, error) { var user store.User err := d.db.Where("email = ?", email).First(&user).Error if err != nil { return nil, err } return &user, nil } func (d *UserDAO) List(limit, offset int) ([]*store.User, int64, error) { var users []*store.User var total int64 d.db.Model(&store.User{}).Count(&total) err := d.db.Limit(limit).Offset(offset).Order("created_at DESC").Find(&users).Error return users, total, err } func (d *UserDAO) Update(user *store.User) error { return d.db.Save(user).Error } func (d *UserDAO) Delete(id uint64) error { return d.db.Delete(&store.User{}, id).Error }