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) }