package repository import ( "iris-test/app/models" "gorm.io/gorm" ) type UsersRepository struct { db *gorm.DB } type UserFilter struct { IsActive *bool } func CreateUsersRepository(db *gorm.DB) *UsersRepository { return &UsersRepository{db} } func applyFilter(db *gorm.DB, filter *UserFilter) *gorm.DB { query := db // if filter.State != "" { // query = query.Where("state = ?", filter.State) // } // if filter.SendAt_lt != nil { // query = query.Where("send_at < ?", filter.SendAt_lt) // } // if filter.SendAt_notNull != nil { // query = query.Not(map[string]interface{}{"send_at": nil}) // } return query } func (repository *UsersRepository) List(filter *UserFilter) *[]models.User { var users []models.User query := repository.db.Model(&models.User{}) query = applyFilter(query, filter) query.Find(&users) return &users }