59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"encoding/base64"
|
|
"strings"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/labstack/echo/v4"
|
|
"next-terminal/server/model"
|
|
"next-terminal/server/repository"
|
|
)
|
|
|
|
type LogoApi struct{}
|
|
|
|
func (api LogoApi) LogosEndpoint(c echo.Context) error {
|
|
logos := repository.LogoRepository.FindAll(context.TODO())
|
|
return Success(c, logos)
|
|
}
|
|
|
|
func (api LogoApi) UploadEndpoint(c echo.Context) error {
|
|
file, err := c.FormFile("file")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
src, err := file.Open()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer src.Close()
|
|
|
|
buf := make([]byte, file.Size)
|
|
n, _ := src.Read(buf)
|
|
data := base64.StdEncoding.EncodeToString(buf[:n])
|
|
|
|
ext := strings.ToLower(file.Filename[strings.LastIndex(file.Filename, "."):])
|
|
name := uuid.New().String() + ext
|
|
|
|
logo := model.Logo{
|
|
ID: uuid.New().String(),
|
|
Name: name,
|
|
Data: "data:image/" + ext + ";base64," + data,
|
|
Deletable: true,
|
|
}
|
|
if err := repository.LogoRepository.Create(context.TODO(), &logo); err != nil {
|
|
return err
|
|
}
|
|
|
|
return Success(c, logo)
|
|
}
|
|
|
|
func (api LogoApi) DeleteEndpoint(c echo.Context) error {
|
|
name := c.Param("name")
|
|
if err := repository.LogoRepository.DeleteByName(context.TODO(), name); err != nil {
|
|
return err
|
|
}
|
|
return Success(c, nil)
|
|
}
|