mirror of https://github.com/sunface/rust-course
parent
a53ffd4fde
commit
4d03dd45b9
@ -0,0 +1,20 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/imdotdev/im.dev/server/internal/session"
|
||||
"github.com/imdotdev/im.dev/server/pkg/common"
|
||||
)
|
||||
|
||||
func GetUsers(c *gin.Context) {
|
||||
query := c.Query("query")
|
||||
users, err := session.GetUsers(query)
|
||||
if err != nil {
|
||||
c.JSON(err.Status, common.RespError(err.Message))
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, common.RespSuccess(users))
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package cache
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/imdotdev/im.dev/server/pkg/db"
|
||||
"github.com/imdotdev/im.dev/server/pkg/log"
|
||||
"github.com/imdotdev/im.dev/server/pkg/models"
|
||||
)
|
||||
|
||||
var logger = log.RootLogger.New("logger", "cache")
|
||||
var Users []*models.User
|
||||
|
||||
func Init() {
|
||||
for {
|
||||
// load users
|
||||
rows, err := db.Conn.Query(`SELECT id,username,role,nickname,email,avatar,last_seen_at,created FROM user`)
|
||||
if err != nil {
|
||||
logger.Error("load users error", "error", err)
|
||||
time.Sleep(60 * time.Second)
|
||||
continue
|
||||
}
|
||||
|
||||
var users []*models.User
|
||||
for rows.Next() {
|
||||
user := &models.User{}
|
||||
err := rows.Scan(&user.ID, &user.Username, &user.Role, &user.Nickname, &user.Email, &user.Avatar, &user.LastSeenAt, &user.Created)
|
||||
if err != nil {
|
||||
logger.Warn("scan user error", "error", err)
|
||||
continue
|
||||
}
|
||||
users = append(users, user)
|
||||
}
|
||||
|
||||
Users = users
|
||||
|
||||
time.Sleep(60 * time.Second)
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package session
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/imdotdev/im.dev/server/internal/cache"
|
||||
"github.com/imdotdev/im.dev/server/pkg/e"
|
||||
"github.com/imdotdev/im.dev/server/pkg/models"
|
||||
)
|
||||
|
||||
func GetUsers(q string) ([]*models.User, *e.Error) {
|
||||
allUsers := cache.Users
|
||||
|
||||
users := make([]*models.User, 0)
|
||||
for _, u := range allUsers {
|
||||
if strings.HasPrefix(strings.ToLower(u.Nickname), strings.ToLower(q)) {
|
||||
users = append(users, u)
|
||||
continue
|
||||
}
|
||||
|
||||
if strings.HasPrefix(strings.ToLower(u.Username), strings.ToLower(q)) {
|
||||
users = append(users, u)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
return users, nil
|
||||
}
|
Loading…
Reference in new issue