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 }