package api import ( "context" "next-terminal/server/common/maps" "next-terminal/server/model" "next-terminal/server/repository" "next-terminal/server/utils" "strconv" "github.com/labstack/echo/v4" ) type SnippetApi struct{} func (api SnippetApi) AllEndpoint(c echo.Context) error { items, err := repository.SnippetRepository.FindAll(context.TODO()) if err != nil { return err } return Success(c, items) } func (api SnippetApi) PagingEndpoint(c echo.Context) error { pageIndex := 1 pageSize := 10 if pi := c.QueryParam("pageIndex"); pi != "" { if p, err := strconv.Atoi(pi); err == nil && p > 0 { pageIndex = p } } if ps := c.QueryParam("pageSize"); ps != "" { if p, err := strconv.Atoi(ps); err == nil && p > 0 { pageSize = p } } name := c.QueryParam("name") items, total, err := repository.SnippetRepository.FindPage(context.TODO(), pageIndex, pageSize, name) if err != nil { return err } return Success(c, maps.Map{ "items": items, "total": total, }) } func (api SnippetApi) CreateEndpoint(c echo.Context) error { var item model.Snippet if err := c.Bind(&item); err != nil { return err } account, _ := GetCurrentAccount(c) item.ID = utils.LongUUID() item.CreatedBy = account.ID item.UpdatedBy = account.ID if item.Visibility == "" { item.Visibility = "private" } if err := repository.SnippetRepository.Create(context.TODO(), &item); err != nil { return err } return Success(c, item) } func (api SnippetApi) UpdateEndpoint(c echo.Context) error { id := c.Param("id") var item model.Snippet if err := c.Bind(&item); err != nil { return err } account, _ := GetCurrentAccount(c) item.ID = id item.UpdatedBy = account.ID if err := repository.SnippetRepository.UpdateById(context.TODO(), &item, id); err != nil { return err } return Success(c, item) } func (api SnippetApi) DeleteEndpoint(c echo.Context) error { id := c.Param("id") if err := repository.SnippetRepository.DeleteById(context.TODO(), id); err != nil { return err } return Success(c, nil) } func (api SnippetApi) GetEndpoint(c echo.Context) error { id := c.Param("id") item, err := repository.SnippetRepository.FindById(context.TODO(), id) if err != nil { return err } return Success(c, item) } type SnippetUserApi struct{} func (api SnippetUserApi) AllEndpoint(c echo.Context) error { account, _ := GetCurrentAccount(c) items, err := repository.SnippetRepository.FindByUserId(context.TODO(), account.ID) if err != nil { return err } return Success(c, items) } func (api SnippetUserApi) PagingEndpoint(c echo.Context) error { return api.AllEndpoint(c) } func (api SnippetUserApi) GetEndpoint(c echo.Context) error { id := c.Param("id") item, err := repository.SnippetRepository.FindById(context.TODO(), id) if err != nil { return err } return Success(c, item) }