Skip to content
Snippets Groups Projects
Commit e65eb25f authored by Danis Kirasirov's avatar Danis Kirasirov :8ball: Committed by Pavel Antonov
Browse files

chore: Добавлено поля Temporary в объекте File

parent cec17190
Branches
Tags
No related merge requests found
......@@ -135,7 +135,7 @@ func (t FileType) PreSave(ctx context.Context, fld *field.Field, v interface{},
if f.ID == "" {
return nil, false, errors.New("FileType: file id required")
}
if !f.Temporary() {
if !f.Temporary {
return f, false, nil
}
......
......@@ -2,18 +2,12 @@ package files
import (
"bytes"
"fmt"
"io"
"strings"
"text/template"
"git.perx.ru/perxis/perxis-go/id"
)
const (
TemporaryPrefix = "tmp"
)
// File - описание файла в системе хранения perxis
type File struct {
ID string `mapstructure:"id,omitempty" json:"id" expr:"id"` // Уникальный идентификатор файла в хранилище
......@@ -22,6 +16,7 @@ type File struct {
MimeType string `mapstructure:"mimeType,omitempty" json:"mimeType" bson:"mimeType,omitempty" expr:"mime_type"` // Mime-type файла
URL string `mapstructure:"url,omitempty" json:"url" bson:"url,omitempty" expr:"url"` // Адрес для загрузки файла
Key string `mapstructure:"key,omitempty" json:"key" bson:"key,omitempty" expr:"key"` // Ключ для хранения файла в хранилище
Temporary bool `mapstructure:"temporary,omitempty" json:"temporary,omitempty" bson:"temporary,omitempty"` // Находится ли файл во временном хранилище
Content io.Reader `mapstructure:"-" json:"-" bson:"-"` // Альтернативный способ задать содержимое файла
}
......@@ -29,10 +24,6 @@ func (f File) Clone() *File {
return &f
}
func (f File) Temporary() bool {
return strings.HasPrefix(f.ID, TemporaryPrefix)
}
func (f *File) SetURLWithTemplate(t *template.Template) error {
if t == nil {
return nil
......@@ -48,15 +39,12 @@ func (f *File) SetURLWithTemplate(t *template.Template) error {
}
func NewFile(name, mimeType string, size uint64, temp bool) *File {
i := id.GenerateNewID()
if temp {
i = fmt.Sprintf("%s%s", TemporaryPrefix, i)
}
return &File{
ID: i,
ID: id.GenerateNewID(),
Name: name,
Size: size,
MimeType: mimeType,
Temporary: temp,
}
}
......
// Code generated by mockery v2.33.3. DO NOT EDIT.
// Code generated by mockery v2.43.2. DO NOT EDIT.
package mocks
......@@ -19,6 +19,10 @@ type Downloader struct {
func (_m *Downloader) Download(dst io.Writer, file *files.File) error {
ret := _m.Called(dst, file)
if len(ret) == 0 {
panic("no return value specified for Download")
}
var r0 error
if rf, ok := ret.Get(0).(func(io.Writer, *files.File) error); ok {
r0 = rf(dst, file)
......
// Code generated by mockery v2.33.3. DO NOT EDIT.
// Code generated by mockery v2.43.2. DO NOT EDIT.
package mocks
......@@ -18,6 +18,10 @@ type Files struct {
func (_m *Files) AbortUpload(ctx context.Context, upload *files.MultipartUpload) error {
ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for AbortUpload")
}
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) error); ok {
r0 = rf(ctx, upload)
......@@ -32,6 +36,10 @@ func (_m *Files) AbortUpload(ctx context.Context, upload *files.MultipartUpload)
func (_m *Files) CompleteUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for CompleteUpload")
}
var r0 *files.MultipartUpload
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok {
......@@ -58,6 +66,10 @@ func (_m *Files) CompleteUpload(ctx context.Context, upload *files.MultipartUplo
func (_m *Files) DeleteFile(ctx context.Context, file *files.File) error {
ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for DeleteFile")
}
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) error); ok {
r0 = rf(ctx, file)
......@@ -72,6 +84,10 @@ func (_m *Files) DeleteFile(ctx context.Context, file *files.File) error {
func (_m *Files) GetFile(ctx context.Context, file *files.File) (*files.File, error) {
ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for GetFile")
}
var r0 *files.File
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) (*files.File, error)); ok {
......@@ -98,6 +114,10 @@ func (_m *Files) GetFile(ctx context.Context, file *files.File) (*files.File, er
func (_m *Files) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (*files.File, error) {
ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for MoveUpload")
}
var r0 *files.File
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.File, error)); ok {
......@@ -124,6 +144,10 @@ func (_m *Files) MoveUpload(ctx context.Context, upload *files.MultipartUpload)
func (_m *Files) StartUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for StartUpload")
}
var r0 *files.MultipartUpload
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok {
......@@ -150,6 +174,10 @@ func (_m *Files) StartUpload(ctx context.Context, upload *files.MultipartUpload)
func (_m *Files) Upload(ctx context.Context, file *files.File) (*files.Upload, error) {
ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for Upload")
}
var r0 *files.Upload
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) (*files.Upload, error)); ok {
......
// Code generated by mockery v2.33.3. DO NOT EDIT.
// Code generated by mockery v2.43.2. DO NOT EDIT.
package mocks
......@@ -17,6 +17,10 @@ type Middleware struct {
func (_m *Middleware) Execute(_a0 files.Files) files.Files {
ret := _m.Called(_a0)
if len(ret) == 0 {
panic("no return value specified for Execute")
}
var r0 files.Files
if rf, ok := ret.Get(0).(func(files.Files) files.Files); ok {
r0 = rf(_a0)
......
// Code generated by mockery v2.33.3. DO NOT EDIT.
// Code generated by mockery v2.43.2. DO NOT EDIT.
package mocks
......@@ -18,6 +18,10 @@ type Storage struct {
func (_m *Storage) AbortUpload(ctx context.Context, upload *files.MultipartUpload) error {
ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for AbortUpload")
}
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) error); ok {
r0 = rf(ctx, upload)
......@@ -32,6 +36,10 @@ func (_m *Storage) AbortUpload(ctx context.Context, upload *files.MultipartUploa
func (_m *Storage) CompleteUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for CompleteUpload")
}
var r0 *files.MultipartUpload
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok {
......@@ -58,6 +66,10 @@ func (_m *Storage) CompleteUpload(ctx context.Context, upload *files.MultipartUp
func (_m *Storage) DeleteFile(ctx context.Context, file *files.File) error {
ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for DeleteFile")
}
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) error); ok {
r0 = rf(ctx, file)
......@@ -72,6 +84,10 @@ func (_m *Storage) DeleteFile(ctx context.Context, file *files.File) error {
func (_m *Storage) GetFile(ctx context.Context, file *files.File) (*files.File, error) {
ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for GetFile")
}
var r0 *files.File
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) (*files.File, error)); ok {
......@@ -98,6 +114,10 @@ func (_m *Storage) GetFile(ctx context.Context, file *files.File) (*files.File,
func (_m *Storage) Move(ctx context.Context, src *files.File, dst *files.File) (*files.File, error) {
ret := _m.Called(ctx, src, dst)
if len(ret) == 0 {
panic("no return value specified for Move")
}
var r0 *files.File
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File, *files.File) (*files.File, error)); ok {
......@@ -124,6 +144,10 @@ func (_m *Storage) Move(ctx context.Context, src *files.File, dst *files.File) (
func (_m *Storage) StartUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for StartUpload")
}
var r0 *files.MultipartUpload
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok {
......@@ -150,6 +174,10 @@ func (_m *Storage) StartUpload(ctx context.Context, upload *files.MultipartUploa
func (_m *Storage) Upload(ctx context.Context, file *files.File) (*files.Upload, error) {
ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for Upload")
}
var r0 *files.Upload
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) (*files.Upload, error)); ok {
......
// Code generated by mockery v2.33.3. DO NOT EDIT.
// Code generated by mockery v2.43.2. DO NOT EDIT.
package mocks
......@@ -19,6 +19,10 @@ type Uploader struct {
func (_m *Uploader) Upload(src io.Reader, upload *files.Upload) error {
ret := _m.Called(src, upload)
if len(ret) == 0 {
panic("no return value specified for Upload")
}
var r0 error
if rf, ok := ret.Get(0).(func(io.Reader, *files.Upload) error); ok {
r0 = rf(src, upload)
......
......@@ -99,6 +99,7 @@ func PtrFileToProto(file *files.File) (*pb.File, error) {
Size: file.Size,
MimeType: file.MimeType,
Url: file.URL,
Temporary: file.Temporary,
}
return pbFile, nil
}
......@@ -113,6 +114,7 @@ func ProtoToPtrFile(protoFile *pb.File) (*files.File, error) {
Size: protoFile.Size,
MimeType: protoFile.MimeType,
URL: protoFile.Url,
Temporary: protoFile.Temporary,
}
return file, nil
}
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment