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