fix: frontend
This commit is contained in:
@@ -13,6 +13,24 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
type Pagination struct {
|
||||
Page int64 `json:"page"`
|
||||
Limit int64 `json:"limit"`
|
||||
Offset int64 `json:"-"`
|
||||
}
|
||||
|
||||
func (p *Pagination) Format() {
|
||||
if p.Limit == 0 {
|
||||
p.Limit = 10
|
||||
}
|
||||
|
||||
if p.Page == 0 {
|
||||
p.Offset = 0
|
||||
} else {
|
||||
p.Offset = (p.Page - 1) * p.Limit
|
||||
}
|
||||
}
|
||||
|
||||
func ServeCmd() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "serve",
|
||||
@@ -35,10 +53,16 @@ func serveCmd(cmd *cobra.Command, args []string) error {
|
||||
|
||||
app := fiber.New()
|
||||
|
||||
app.Static("/medias", "/share/telegram/outputs")
|
||||
app.Static("/", "/public")
|
||||
|
||||
// Initialize default config
|
||||
app.Use(recover.New())
|
||||
|
||||
app.Get("/channels", func(c *fiber.Ctx) error {
|
||||
group := app.Group("/api")
|
||||
|
||||
// get channel list
|
||||
group.Get("/channels", func(c *fiber.Ctx) error {
|
||||
var channels []model.Channels
|
||||
|
||||
tbl := table.Channels
|
||||
@@ -49,9 +73,9 @@ func serveCmd(cmd *cobra.Command, args []string) error {
|
||||
return c.JSON(channels)
|
||||
})
|
||||
|
||||
// 获取频道最新一条数据
|
||||
app.Get("/channels/:id", func(c *fiber.Ctx) error {
|
||||
channelID, err := c.ParamsInt("id")
|
||||
// get channel info
|
||||
group.Get("/channels/:channel", func(c *fiber.Ctx) error {
|
||||
channelID, err := c.ParamsInt("channel")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -61,7 +85,7 @@ func serveCmd(cmd *cobra.Command, args []string) error {
|
||||
tbl := table.Channels
|
||||
err = tbl.
|
||||
SELECT(tbl.AllColumns).
|
||||
WHERE(tbl.ID.EQ(Int64(int64(channelID)))).
|
||||
WHERE(tbl.UUID.EQ(Int64(int64(channelID)))).
|
||||
QueryContext(c.Context(), db, &channel)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -70,35 +94,45 @@ func serveCmd(cmd *cobra.Command, args []string) error {
|
||||
return c.JSON(channel)
|
||||
})
|
||||
|
||||
app.Get("/channels/:id/message", func(c *fiber.Ctx) error {
|
||||
channelID, err := c.ParamsInt("id")
|
||||
// get channel's post list
|
||||
group.Get("/channels/:channel/messages", func(c *fiber.Ctx) error {
|
||||
channelID, err := c.ParamsInt("channel")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var msg model.ChannelMessages
|
||||
var p Pagination
|
||||
if err := c.QueryParser(&p); err != nil {
|
||||
return err
|
||||
}
|
||||
p.Format()
|
||||
|
||||
var messages []model.ChannelMessages
|
||||
|
||||
tbl := table.ChannelMessages
|
||||
err = tbl.
|
||||
SELECT(tbl.AllColumns).
|
||||
WHERE(tbl.ChannelID.EQ(Int64(int64(channelID)))).
|
||||
ORDER_BY(tbl.ID.DESC()).
|
||||
LIMIT(1).
|
||||
QueryContext(c.Context(), db, &msg)
|
||||
LIMIT(p.Limit).
|
||||
OFFSET(p.Offset).
|
||||
QueryContext(c.Context(), db, &messages)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.JSON(msg)
|
||||
return c.JSON(messages)
|
||||
})
|
||||
|
||||
app.Get("/channels/:id/message/like", func(c *fiber.Ctx) error {
|
||||
channelID, err := c.ParamsInt("id")
|
||||
if err != nil {
|
||||
// favorite messages
|
||||
group.Get("/favorites", func(c *fiber.Ctx) error {
|
||||
var p Pagination
|
||||
if err := c.QueryParser(&p); err != nil {
|
||||
return err
|
||||
}
|
||||
p.Format()
|
||||
|
||||
var msg model.ChannelMessages
|
||||
var messages []model.ChannelMessages
|
||||
|
||||
tbl := table.ChannelMessages
|
||||
err = tbl.
|
||||
@@ -109,23 +143,19 @@ func serveCmd(cmd *cobra.Command, args []string) error {
|
||||
),
|
||||
).
|
||||
ORDER_BY(tbl.ID.DESC()).
|
||||
LIMIT(1).
|
||||
QueryContext(c.Context(), db, &msg)
|
||||
LIMIT(p.Limit).
|
||||
OFFSET(p.Offset).
|
||||
QueryContext(c.Context(), db, &messages)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.JSON(msg)
|
||||
return c.JSON(messages)
|
||||
})
|
||||
|
||||
// toggle msg likes
|
||||
app.Patch("/channels/:channelID/message/:id/like", func(c *fiber.Ctx) error {
|
||||
channelID, err := c.ParamsInt("channelID")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
msgID, err := c.ParamsInt("id")
|
||||
// toggle favorite message
|
||||
group.Patch("message/:message/favorite", func(c *fiber.Ctx) error {
|
||||
messageID, err := c.ParamsInt("message")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -133,11 +163,10 @@ func serveCmd(cmd *cobra.Command, args []string) error {
|
||||
var msg model.ChannelMessages
|
||||
|
||||
tbl := table.ChannelMessages
|
||||
cond := tbl.ChannelID.EQ(Int64(int64(channelID))).AND(tbl.ID.EQ(Int64(int64(msgID))))
|
||||
|
||||
err = tbl.
|
||||
SELECT(tbl.AllColumns).
|
||||
WHERE(cond).
|
||||
WHERE(tbl.ID.EQ(Int64(int64(messageID)))).
|
||||
ORDER_BY(tbl.ID.DESC()).
|
||||
LIMIT(1).
|
||||
QueryContext(c.Context(), db, &msg)
|
||||
@@ -148,7 +177,7 @@ func serveCmd(cmd *cobra.Command, args []string) error {
|
||||
_, err = tbl.
|
||||
UPDATE().
|
||||
SET(tbl.Like.SET(Bool(!msg.Like))).
|
||||
WHERE(cond).
|
||||
WHERE(tbl.ID.EQ(Int64(int64(messageID)))).
|
||||
ExecContext(c.Context(), db)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -158,23 +187,16 @@ func serveCmd(cmd *cobra.Command, args []string) error {
|
||||
})
|
||||
|
||||
// delete message
|
||||
app.Delete("/channels/:channelID/message/:id", func(c *fiber.Ctx) error {
|
||||
channelID, err := c.ParamsInt("channelID")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
msgID, err := c.ParamsInt("id")
|
||||
group.Delete("/messages/:message", func(c *fiber.Ctx) error {
|
||||
msgID, err := c.ParamsInt("message")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tbl := table.ChannelMessages
|
||||
cond := tbl.ChannelID.EQ(Int64(int64(channelID))).AND(tbl.ID.EQ(Int64(int64(msgID))))
|
||||
|
||||
_, err = tbl.
|
||||
DELETE().
|
||||
WHERE(cond).
|
||||
WHERE(tbl.ID.EQ(Int64(int64(msgID)))).
|
||||
ExecContext(c.Context(), db)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user