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
No related branches found
No related tags found
No related merge requests found
...@@ -135,7 +135,7 @@ func (t FileType) PreSave(ctx context.Context, fld *field.Field, v interface{}, ...@@ -135,7 +135,7 @@ func (t FileType) PreSave(ctx context.Context, fld *field.Field, v interface{},
if f.ID == "" { if f.ID == "" {
return nil, false, errors.New("FileType: file id required") return nil, false, errors.New("FileType: file id required")
} }
if !f.Temporary() { if !f.Temporary {
return f, false, nil return f, false, nil
} }
......
...@@ -2,18 +2,12 @@ package files ...@@ -2,18 +2,12 @@ package files
import ( import (
"bytes" "bytes"
"fmt"
"io" "io"
"strings"
"text/template" "text/template"
"git.perx.ru/perxis/perxis-go/id" "git.perx.ru/perxis/perxis-go/id"
) )
const (
TemporaryPrefix = "tmp"
)
// File - описание файла в системе хранения perxis // File - описание файла в системе хранения perxis
type File struct { type File struct {
ID string `mapstructure:"id,omitempty" json:"id" expr:"id"` // Уникальный идентификатор файла в хранилище ID string `mapstructure:"id,omitempty" json:"id" expr:"id"` // Уникальный идентификатор файла в хранилище
...@@ -22,6 +16,7 @@ type File struct { ...@@ -22,6 +16,7 @@ type File struct {
MimeType string `mapstructure:"mimeType,omitempty" json:"mimeType" bson:"mimeType,omitempty" expr:"mime_type"` // Mime-type файла 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"` // Адрес для загрузки файла URL string `mapstructure:"url,omitempty" json:"url" bson:"url,omitempty" expr:"url"` // Адрес для загрузки файла
Key string `mapstructure:"key,omitempty" json:"key" bson:"key,omitempty" expr:"key"` // Ключ для хранения файла в хранилище 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:"-"` // Альтернативный способ задать содержимое файла Content io.Reader `mapstructure:"-" json:"-" bson:"-"` // Альтернативный способ задать содержимое файла
} }
...@@ -29,10 +24,6 @@ func (f File) Clone() *File { ...@@ -29,10 +24,6 @@ func (f File) Clone() *File {
return &f return &f
} }
func (f File) Temporary() bool {
return strings.HasPrefix(f.ID, TemporaryPrefix)
}
func (f *File) SetURLWithTemplate(t *template.Template) error { func (f *File) SetURLWithTemplate(t *template.Template) error {
if t == nil { if t == nil {
return nil return nil
...@@ -48,15 +39,12 @@ func (f *File) SetURLWithTemplate(t *template.Template) error { ...@@ -48,15 +39,12 @@ func (f *File) SetURLWithTemplate(t *template.Template) error {
} }
func NewFile(name, mimeType string, size uint64, temp bool) *File { func NewFile(name, mimeType string, size uint64, temp bool) *File {
i := id.GenerateNewID()
if temp {
i = fmt.Sprintf("%s%s", TemporaryPrefix, i)
}
return &File{ return &File{
ID: i, ID: id.GenerateNewID(),
Name: name, Name: name,
Size: size, Size: size,
MimeType: mimeType, 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 package mocks
...@@ -19,6 +19,10 @@ type Downloader struct { ...@@ -19,6 +19,10 @@ type Downloader struct {
func (_m *Downloader) Download(dst io.Writer, file *files.File) error { func (_m *Downloader) Download(dst io.Writer, file *files.File) error {
ret := _m.Called(dst, file) ret := _m.Called(dst, file)
if len(ret) == 0 {
panic("no return value specified for Download")
}
var r0 error var r0 error
if rf, ok := ret.Get(0).(func(io.Writer, *files.File) error); ok { if rf, ok := ret.Get(0).(func(io.Writer, *files.File) error); ok {
r0 = rf(dst, file) 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 package mocks
...@@ -18,6 +18,10 @@ type Files struct { ...@@ -18,6 +18,10 @@ type Files struct {
func (_m *Files) AbortUpload(ctx context.Context, upload *files.MultipartUpload) error { func (_m *Files) AbortUpload(ctx context.Context, upload *files.MultipartUpload) error {
ret := _m.Called(ctx, upload) ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for AbortUpload")
}
var r0 error var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) error); ok { if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) error); ok {
r0 = rf(ctx, upload) r0 = rf(ctx, upload)
...@@ -32,6 +36,10 @@ func (_m *Files) AbortUpload(ctx context.Context, upload *files.MultipartUpload) ...@@ -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) { func (_m *Files) CompleteUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
ret := _m.Called(ctx, upload) ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for CompleteUpload")
}
var r0 *files.MultipartUpload var r0 *files.MultipartUpload
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok { 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 ...@@ -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 { func (_m *Files) DeleteFile(ctx context.Context, file *files.File) error {
ret := _m.Called(ctx, file) ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for DeleteFile")
}
var r0 error var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) error); ok { if rf, ok := ret.Get(0).(func(context.Context, *files.File) error); ok {
r0 = rf(ctx, file) r0 = rf(ctx, file)
...@@ -72,6 +84,10 @@ func (_m *Files) DeleteFile(ctx context.Context, file *files.File) error { ...@@ -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) { func (_m *Files) GetFile(ctx context.Context, file *files.File) (*files.File, error) {
ret := _m.Called(ctx, file) ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for GetFile")
}
var r0 *files.File var r0 *files.File
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) (*files.File, error)); ok { 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 ...@@ -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) { func (_m *Files) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (*files.File, error) {
ret := _m.Called(ctx, upload) ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for MoveUpload")
}
var r0 *files.File var r0 *files.File
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.File, error)); ok { 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) ...@@ -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) { func (_m *Files) StartUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
ret := _m.Called(ctx, upload) ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for StartUpload")
}
var r0 *files.MultipartUpload var r0 *files.MultipartUpload
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok { 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) ...@@ -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) { func (_m *Files) Upload(ctx context.Context, file *files.File) (*files.Upload, error) {
ret := _m.Called(ctx, file) ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for Upload")
}
var r0 *files.Upload var r0 *files.Upload
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) (*files.Upload, error)); ok { 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 package mocks
...@@ -17,6 +17,10 @@ type Middleware struct { ...@@ -17,6 +17,10 @@ type Middleware struct {
func (_m *Middleware) Execute(_a0 files.Files) files.Files { func (_m *Middleware) Execute(_a0 files.Files) files.Files {
ret := _m.Called(_a0) ret := _m.Called(_a0)
if len(ret) == 0 {
panic("no return value specified for Execute")
}
var r0 files.Files var r0 files.Files
if rf, ok := ret.Get(0).(func(files.Files) files.Files); ok { if rf, ok := ret.Get(0).(func(files.Files) files.Files); ok {
r0 = rf(_a0) 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 package mocks
...@@ -18,6 +18,10 @@ type Storage struct { ...@@ -18,6 +18,10 @@ type Storage struct {
func (_m *Storage) AbortUpload(ctx context.Context, upload *files.MultipartUpload) error { func (_m *Storage) AbortUpload(ctx context.Context, upload *files.MultipartUpload) error {
ret := _m.Called(ctx, upload) ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for AbortUpload")
}
var r0 error var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) error); ok { if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) error); ok {
r0 = rf(ctx, upload) r0 = rf(ctx, upload)
...@@ -32,6 +36,10 @@ func (_m *Storage) AbortUpload(ctx context.Context, upload *files.MultipartUploa ...@@ -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) { func (_m *Storage) CompleteUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
ret := _m.Called(ctx, upload) ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for CompleteUpload")
}
var r0 *files.MultipartUpload var r0 *files.MultipartUpload
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok { 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 ...@@ -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 { func (_m *Storage) DeleteFile(ctx context.Context, file *files.File) error {
ret := _m.Called(ctx, file) ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for DeleteFile")
}
var r0 error var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) error); ok { if rf, ok := ret.Get(0).(func(context.Context, *files.File) error); ok {
r0 = rf(ctx, file) r0 = rf(ctx, file)
...@@ -72,6 +84,10 @@ func (_m *Storage) DeleteFile(ctx context.Context, file *files.File) error { ...@@ -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) { func (_m *Storage) GetFile(ctx context.Context, file *files.File) (*files.File, error) {
ret := _m.Called(ctx, file) ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for GetFile")
}
var r0 *files.File var r0 *files.File
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) (*files.File, error)); ok { 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, ...@@ -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) { func (_m *Storage) Move(ctx context.Context, src *files.File, dst *files.File) (*files.File, error) {
ret := _m.Called(ctx, src, dst) ret := _m.Called(ctx, src, dst)
if len(ret) == 0 {
panic("no return value specified for Move")
}
var r0 *files.File var r0 *files.File
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File, *files.File) (*files.File, error)); ok { 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) ( ...@@ -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) { func (_m *Storage) StartUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
ret := _m.Called(ctx, upload) ret := _m.Called(ctx, upload)
if len(ret) == 0 {
panic("no return value specified for StartUpload")
}
var r0 *files.MultipartUpload var r0 *files.MultipartUpload
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok { 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 ...@@ -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) { func (_m *Storage) Upload(ctx context.Context, file *files.File) (*files.Upload, error) {
ret := _m.Called(ctx, file) ret := _m.Called(ctx, file)
if len(ret) == 0 {
panic("no return value specified for Upload")
}
var r0 *files.Upload var r0 *files.Upload
var r1 error var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *files.File) (*files.Upload, error)); ok { 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 package mocks
...@@ -19,6 +19,10 @@ type Uploader struct { ...@@ -19,6 +19,10 @@ type Uploader struct {
func (_m *Uploader) Upload(src io.Reader, upload *files.Upload) error { func (_m *Uploader) Upload(src io.Reader, upload *files.Upload) error {
ret := _m.Called(src, upload) ret := _m.Called(src, upload)
if len(ret) == 0 {
panic("no return value specified for Upload")
}
var r0 error var r0 error
if rf, ok := ret.Get(0).(func(io.Reader, *files.Upload) error); ok { if rf, ok := ret.Get(0).(func(io.Reader, *files.Upload) error); ok {
r0 = rf(src, upload) r0 = rf(src, upload)
......
...@@ -99,6 +99,7 @@ func PtrFileToProto(file *files.File) (*pb.File, error) { ...@@ -99,6 +99,7 @@ func PtrFileToProto(file *files.File) (*pb.File, error) {
Size: file.Size, Size: file.Size,
MimeType: file.MimeType, MimeType: file.MimeType,
Url: file.URL, Url: file.URL,
Temporary: file.Temporary,
} }
return pbFile, nil return pbFile, nil
} }
...@@ -113,6 +114,7 @@ func ProtoToPtrFile(protoFile *pb.File) (*files.File, error) { ...@@ -113,6 +114,7 @@ func ProtoToPtrFile(protoFile *pb.File) (*files.File, error) {
Size: protoFile.Size, Size: protoFile.Size,
MimeType: protoFile.MimeType, MimeType: protoFile.MimeType,
URL: protoFile.Url, URL: protoFile.Url,
Temporary: protoFile.Temporary,
} }
return file, nil 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