fix utils
This commit is contained in:
parent
1429c7fd85
commit
0a471443ce
@ -9,13 +9,13 @@ import (
|
||||
|
||||
// Account - Account table struct
|
||||
type Account struct {
|
||||
ID string `xorm:"id <-" cc:"id"`
|
||||
Account string `xorm:"account" cc:"account"`
|
||||
Password string `xorm:"password" cc:"-"`
|
||||
Nick string `xorm:"nick" cc:"nick"`
|
||||
Email string `xorm:"email" cc:"email"`
|
||||
Ctime time.Time `xorm:"ctime created" cc:"ctime"`
|
||||
Mtime time.Time `xorm:"mtime updated" cc:"mtime"`
|
||||
ID string `sql:"id" cc:"id"`
|
||||
Account string `sql:"account" cc:"account"`
|
||||
Password string `sql:"password" cc:"-"`
|
||||
Nick string `sql:"nick" cc:"nick"`
|
||||
Email string `sql:"email" cc:"email"`
|
||||
Ctime time.Time `sql:"ctime" cc:"ctime"`
|
||||
Mtime time.Time `sql:"mtime" cc:"mtime"`
|
||||
}
|
||||
|
||||
// GetAllAccount - all account
|
||||
@ -25,6 +25,7 @@ func GetAllAccount() ([]Account, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
err = dbtool.ScanToStructAll(rows, &accs)
|
||||
return accs, nil
|
||||
}
|
||||
@ -37,6 +38,7 @@ func GetAccount(account string) (acc *Account, err error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
ok, err := dbtool.ScanToStruct(rows, acc)
|
||||
if err != nil || !ok {
|
||||
@ -52,6 +54,7 @@ func (a *Account) Get() (bool, error) {
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
ok, err := dbtool.ScanToStruct(rows, a)
|
||||
if err != nil {
|
||||
@ -68,6 +71,7 @@ func (a *Account) Create() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer row.Close()
|
||||
|
||||
ok, err := dbtool.ScanToStruct(row, a)
|
||||
if err != nil {
|
||||
|
@ -1,16 +1,74 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"git.trj.tw/golang/utils/dbtool"
|
||||
)
|
||||
|
||||
// Album model
|
||||
type Album struct {
|
||||
ID string `xorm:"id"`
|
||||
UID string `xorm:"uid"`
|
||||
Name string `xorm:"name"`
|
||||
Public bool `xorm:"public default false"`
|
||||
Ctime time.Time `xorm:"ctime created"`
|
||||
Mtime time.Time `xorm:"mtime updated"`
|
||||
Photos []*Photo `xorm:"-"`
|
||||
ID string `sql:"id" cc:"id"`
|
||||
UID string `sql:"uid" cc:"uid"`
|
||||
Name string `sql:"name" cc:"name"`
|
||||
Public bool `sql:"public" cc:"public"`
|
||||
Ctime time.Time `sql:"ctime" cc:"ctime"`
|
||||
Mtime time.Time `sql:"mtime" cc:"mtime"`
|
||||
Photos []*Photo `sql:"-" cc:"-"`
|
||||
}
|
||||
|
||||
// GetAllAlbums -
|
||||
func GetAllAlbums(arg ...bool) (album []Album, err error) {
|
||||
var rows *sql.Rows
|
||||
if len(arg) > 0 {
|
||||
rows, err = x.Query(`select "id", "uid", "name", "public", "ctime", "mtime" from "storage"."album" where "public" = $1`, arg[0])
|
||||
} else {
|
||||
rows, err = x.Query(`select "id", "uid", "name", "public", "ctime", "mtime" from "storage"."album"`)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
err = dbtool.ScanToStructAll(rows, &album)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetUserAlbums -
|
||||
func GetUserAlbums(uid string) (album []Album, err error) {
|
||||
if len(uid) == 0 {
|
||||
return nil, errors.New("user id empty")
|
||||
}
|
||||
rows, err := x.Query(`select "id", "uid", "name", "public", "ctime", "mtime" from "storage"."album" where "uid" = $1`, uid)
|
||||
|
||||
err = dbtool.ScanToStructAll(rows, &album)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetAlbum -
|
||||
func GetAlbum(id string) (album *Album, err error) {
|
||||
rows, err := x.Query(`selecy "id", "uid", "name", "public", "ctime", "mtime" where "id" = $1 limit 1`, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
ok, err := dbtool.ScanToStruct(rows, album)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if !ok {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -55,13 +55,9 @@ func RedisGet(namespace, key string) (string, error) {
|
||||
return "", errors.New("key empty")
|
||||
}
|
||||
|
||||
if len(n) > 0 {
|
||||
n += ":"
|
||||
}
|
||||
|
||||
n += key
|
||||
|
||||
val, err := redisStore.Get(key).Result()
|
||||
val, err := redisStore.Get(n).Result()
|
||||
return val, err
|
||||
}
|
||||
|
||||
@ -77,10 +73,6 @@ func RedisDel(namespace, key string) error {
|
||||
return errors.New("key empty")
|
||||
}
|
||||
|
||||
if len(n) > 0 {
|
||||
n += ":"
|
||||
}
|
||||
|
||||
n += key
|
||||
|
||||
err := redisStore.Del(n).Err()
|
||||
|
34
modules/middleware/middleware.go
Normal file
34
modules/middleware/middleware.go
Normal file
@ -0,0 +1,34 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"git.trj.tw/golang/go-gallery/modules/context"
|
||||
"git.trj.tw/golang/go-gallery/modules/memstore"
|
||||
)
|
||||
|
||||
// VerifyToken -
|
||||
func VerifyToken(c *context.Context) {
|
||||
token := c.GetHeader("X-Auth-Token")
|
||||
|
||||
if len(token) == 0 {
|
||||
c.CustomRes("Forbidden", nil)
|
||||
return
|
||||
}
|
||||
|
||||
str, err := memstore.RedisGet("golang", token)
|
||||
if err != nil || len(str) == 0 {
|
||||
c.CustomRes("Forbidden", "token invaild")
|
||||
return
|
||||
}
|
||||
|
||||
jsonData := make(map[string]interface{})
|
||||
err = json.Unmarshal([]byte(str), &jsonData)
|
||||
if err != nil {
|
||||
c.ServerError(nil)
|
||||
}
|
||||
|
||||
c.Set("token", jsonData)
|
||||
|
||||
c.Next()
|
||||
}
|
@ -7,7 +7,10 @@ import (
|
||||
|
||||
// ToMap struct to map[string]interface{}
|
||||
func ToMap(ss interface{}) map[string]interface{} {
|
||||
t := reflect.ValueOf(ss).Elem()
|
||||
t := reflect.ValueOf(ss)
|
||||
if t.Kind() == reflect.Ptr {
|
||||
t = t.Elem()
|
||||
}
|
||||
|
||||
smap := make(map[string]interface{})
|
||||
mtag := regexp.MustCompile(`cc:\"(.+)\"`)
|
||||
|
@ -5,7 +5,6 @@ import (
|
||||
"crypto/sha512"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
@ -40,7 +39,6 @@ func UserLogin(c *context.Context) {
|
||||
acc, err := models.GetAccount(loginArg.Account)
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
c.ServerError(nil)
|
||||
return
|
||||
}
|
||||
|
52
routers/album/album.go
Normal file
52
routers/album/album.go
Normal file
@ -0,0 +1,52 @@
|
||||
package album
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"git.trj.tw/golang/go-gallery/modules/context"
|
||||
"git.trj.tw/golang/go-gallery/modules/utils"
|
||||
|
||||
"git.trj.tw/golang/go-gallery/models"
|
||||
)
|
||||
|
||||
// GetAllAlbums -
|
||||
func GetAllAlbums(c *context.Context) {
|
||||
val, ok := c.Get("token")
|
||||
|
||||
if !ok {
|
||||
c.CustomRes("Foridden", "User token data not found")
|
||||
}
|
||||
|
||||
albums, err := models.GetUserAlbums(val.(map[string]interface{})["user"].(map[string]interface{})["id"].(string))
|
||||
if err != nil {
|
||||
c.ServerError(nil)
|
||||
return
|
||||
}
|
||||
|
||||
data := make(map[string]interface{})
|
||||
data["albums"] = make([]map[string]interface{}, 0)
|
||||
for _, v := range albums {
|
||||
log.Println(v)
|
||||
data["albums"] = append(data["albums"].([]map[string]interface{}), utils.ToMap(v))
|
||||
}
|
||||
c.Success(data)
|
||||
}
|
||||
|
||||
// GetAlbum -
|
||||
func GetAlbum(c *context.Context) {
|
||||
id := c.Param("id")
|
||||
|
||||
album, err := models.GetAlbum(id)
|
||||
if err != nil {
|
||||
c.ServerError(nil)
|
||||
return
|
||||
}
|
||||
if album == nil {
|
||||
c.NotFound("album not found")
|
||||
return
|
||||
}
|
||||
|
||||
data := make(map[string]interface{})
|
||||
data["album"] = album
|
||||
c.Success(data)
|
||||
}
|
@ -3,7 +3,9 @@ package routes
|
||||
import (
|
||||
"git.trj.tw/golang/go-gallery/models"
|
||||
"git.trj.tw/golang/go-gallery/modules/context"
|
||||
"git.trj.tw/golang/go-gallery/modules/middleware"
|
||||
"git.trj.tw/golang/go-gallery/routers/account"
|
||||
"git.trj.tw/golang/go-gallery/routers/album"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@ -43,4 +45,9 @@ func SetDefaultRoutes(r *gin.Engine) {
|
||||
accountAPI.POST("/logout", context.PatchContext(account.UserLogout))
|
||||
accountAPI.POST("/signup", context.PatchContext(account.UserSignup))
|
||||
}
|
||||
api.GET("/albums", context.PatchContext(middleware.VerifyToken), context.PatchContext(album.GetAllAlbums))
|
||||
albumAPI := api.Group("/album", context.PatchContext(middleware.VerifyToken))
|
||||
{
|
||||
albumAPI.GET("/:id", context.PatchContext(album.GetAlbum))
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user