♻️ Use unified post list api
This commit is contained in:
		@@ -54,11 +54,18 @@ func listPost(c *fiber.Ctx) error {
 | 
			
		||||
	take := c.QueryInt("take", 0)
 | 
			
		||||
	offset := c.QueryInt("offset", 0)
 | 
			
		||||
 | 
			
		||||
	realmId := c.QueryInt("realmId", 0)
 | 
			
		||||
 | 
			
		||||
	tx := database.C.
 | 
			
		||||
		Where("realm_id IS NULL").
 | 
			
		||||
		Where("published_at <= ? OR published_at IS NULL", time.Now()).
 | 
			
		||||
		Order("created_at desc")
 | 
			
		||||
 | 
			
		||||
	if realmId > 0 {
 | 
			
		||||
		tx = tx.Where(&models.Post{RealmID: lo.ToPtr(uint(realmId))})
 | 
			
		||||
	} else {
 | 
			
		||||
		tx = tx.Where("realm_id IS NULL")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var author models.Account
 | 
			
		||||
	if len(c.Query("authorId")) > 0 {
 | 
			
		||||
		if err := database.C.Where(&models.Account{Name: c.Query("authorId")}).First(&author).Error; err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,6 @@ import (
 | 
			
		||||
	"code.smartsheep.studio/hydrogen/interactive/pkg/models"
 | 
			
		||||
	"code.smartsheep.studio/hydrogen/interactive/pkg/services"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func getRealm(c *fiber.Ctx) error {
 | 
			
		||||
@@ -42,40 +40,6 @@ func listOwnedRealm(c *fiber.Ctx) error {
 | 
			
		||||
	return c.JSON(realms)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func listPostInRealm(c *fiber.Ctx) error {
 | 
			
		||||
	take := c.QueryInt("take", 0)
 | 
			
		||||
	offset := c.QueryInt("offset", 0)
 | 
			
		||||
	authorId := c.QueryInt("authorId", 0)
 | 
			
		||||
 | 
			
		||||
	realmId, _ := c.ParamsInt("realmId", 0)
 | 
			
		||||
 | 
			
		||||
	tx := database.C.
 | 
			
		||||
		Where(&models.Post{RealmID: lo.ToPtr(uint(realmId))}).
 | 
			
		||||
		Where("published_at <= ? OR published_at IS NULL", time.Now()).
 | 
			
		||||
		Order("created_at desc")
 | 
			
		||||
 | 
			
		||||
	if authorId > 0 {
 | 
			
		||||
		tx = tx.Where(&models.Post{AuthorID: uint(authorId)})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var count int64
 | 
			
		||||
	if err := tx.
 | 
			
		||||
		Model(&models.Post{}).
 | 
			
		||||
		Count(&count).Error; err != nil {
 | 
			
		||||
		return fiber.NewError(fiber.StatusInternalServerError, err.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	posts, err := services.ListPost(tx, take, offset)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fiber.NewError(fiber.StatusBadRequest, err.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return c.JSON(fiber.Map{
 | 
			
		||||
		"count": count,
 | 
			
		||||
		"data":  posts,
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func createRealm(c *fiber.Ctx) error {
 | 
			
		||||
	user := c.Locals("principal").(models.Account)
 | 
			
		||||
	if user.PowerLevel < 10 {
 | 
			
		||||
 
 | 
			
		||||
@@ -79,7 +79,6 @@ func NewServer() {
 | 
			
		||||
		api.Get("/realms", listRealm)
 | 
			
		||||
		api.Get("/realms/me", auth, listOwnedRealm)
 | 
			
		||||
		api.Get("/realms/:realmId", getRealm)
 | 
			
		||||
		api.Get("/realms/:realmId/posts", listPostInRealm)
 | 
			
		||||
		api.Post("/realms", auth, createRealm)
 | 
			
		||||
		api.Put("/realms/:realmId", auth, editRealm)
 | 
			
		||||
		api.Delete("/realms/:realmId", auth, deleteRealm)
 | 
			
		||||
 
 | 
			
		||||
@@ -29,9 +29,10 @@ export default function RealmPage() {
 | 
			
		||||
 | 
			
		||||
  async function readPosts(pn?: number) {
 | 
			
		||||
    if (pn) setPage(pn);
 | 
			
		||||
    const res = await fetch(`/api/realms/${params["realmId"]}/posts?` + new URLSearchParams({
 | 
			
		||||
    const res = await fetch(`/api/posts?` + new URLSearchParams({
 | 
			
		||||
      take: (10).toString(),
 | 
			
		||||
      offset: ((page() - 1) * 10).toString()
 | 
			
		||||
      offset: ((page() - 1) * 10).toString(),
 | 
			
		||||
      realmId: params["realmId"],
 | 
			
		||||
    }));
 | 
			
		||||
    if (res.status !== 200) {
 | 
			
		||||
      setError(await res.text());
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user