59 lines
1.0 KiB
Go

package file
import (
"context"
"donat-widget/internal/model"
"donat-widget/internal/model/sql"
"fmt"
"github.com/google/uuid"
"github.com/jackc/pgx/v5"
"mime/multipart"
)
func New(
db model.Db,
storage model.Storage,
) *RepoFile {
return &RepoFile{
db: db,
storage: storage,
}
}
type RepoFile struct {
db model.Db
storage model.Storage
}
func (fileRepo *RepoFile) AddNew(
ctx context.Context,
streamerID int,
file multipart.FileHeader,
extension, fileType string,
) (string, error) {
fileName, err := fileRepo.storage.Upload(&file, streamerID)
if err != nil {
return "", err
}
args := pgx.NamedArgs{
"streamer_id": streamerID,
"file_name": fileName,
"file_type": fileType,
"extension": extension,
}
fileIDRaw, err := fileRepo.db.Insert(ctx, sql.AddNewFile, args)
if err != nil {
return "", err
}
fileIDBytes, ok := fileIDRaw.([16]uint8)
if !ok {
return "", fmt.Errorf("unexpected fileID type: %T", fileIDRaw)
}
fileID := uuid.UUID(fileIDBytes).String()
return fileID, nil
}