54 lines
863 B
Go
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
|
|
|
|
}
|