2025-03-05 13:10:55 +05:00

54 lines
863 B
Go

package file
import (
"context"
"donat-widget/internal/model"
"donat-widget/internal/model/sql"
"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,
fileName, extension, fileType string,
) (string, error) {
args := pgx.NamedArgs{
"streamer_id": streamerID,
"file_name": fileName,
"file_type": fileType,
"extension": extension,
}
fileID, err := fileRepo.db.Insert(ctx, sql.AddNewFile, args)
if err != nil {
return "", err
}
err = fileRepo.storage.Upload(
&file,
streamerID,
)
if err != nil {
return "", err
}
return fileID.(string), nil
}