init
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"apskel-pos-be/internal/constants"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type File struct {
|
||||
ID uuid.UUID
|
||||
OrganizationID uuid.UUID
|
||||
UserID uuid.UUID
|
||||
FileName string
|
||||
OriginalName string
|
||||
FileURL string
|
||||
FileSize int64
|
||||
MimeType string
|
||||
FileType string
|
||||
UploadPath string
|
||||
IsPublic bool
|
||||
Metadata map[string]interface{}
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
|
||||
// Request DTOs
|
||||
type UploadFileRequest struct {
|
||||
FileType constants.FileType `validate:"required"`
|
||||
IsPublic *bool `validate:"omitempty"`
|
||||
Metadata map[string]interface{}
|
||||
}
|
||||
|
||||
type UpdateFileRequest struct {
|
||||
IsPublic *bool `validate:"omitempty"`
|
||||
Metadata map[string]interface{}
|
||||
}
|
||||
|
||||
type ListFilesRequest struct {
|
||||
OrganizationID *uuid.UUID
|
||||
UserID *uuid.UUID
|
||||
FileType *constants.FileType
|
||||
IsPublic *bool
|
||||
DateFrom *time.Time
|
||||
DateTo *time.Time
|
||||
Search string
|
||||
Page int `validate:"required,min=1"`
|
||||
Limit int `validate:"required,min=1,max=100"`
|
||||
}
|
||||
|
||||
// Response DTOs
|
||||
type FileResponse struct {
|
||||
ID uuid.UUID
|
||||
OrganizationID uuid.UUID
|
||||
UserID uuid.UUID
|
||||
FileName string
|
||||
OriginalName string
|
||||
FileURL string
|
||||
FileSize int64
|
||||
MimeType string
|
||||
FileType string
|
||||
UploadPath string
|
||||
IsPublic bool
|
||||
Metadata map[string]interface{}
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
|
||||
type ListFilesResponse struct {
|
||||
Files []*FileResponse
|
||||
TotalCount int
|
||||
Page int
|
||||
Limit int
|
||||
TotalPages int
|
||||
}
|
||||
|
||||
type UploadFileResponse struct {
|
||||
File FileResponse
|
||||
}
|
||||
|
||||
// Helper methods
|
||||
func (f *File) IsImage() bool {
|
||||
return f.FileType == string(constants.FileTypeImage)
|
||||
}
|
||||
|
||||
func (f *File) IsDocument() bool {
|
||||
return f.FileType == string(constants.FileTypeDocument)
|
||||
}
|
||||
|
||||
func (f *File) IsVideo() bool {
|
||||
return f.FileType == string(constants.FileTypeVideo)
|
||||
}
|
||||
|
||||
func (f *File) GetFileExtension() string {
|
||||
// Extract extension from original name
|
||||
for i := len(f.OriginalName) - 1; i >= 0; i-- {
|
||||
if f.OriginalName[i] == '.' {
|
||||
return f.OriginalName[i:]
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
Reference in New Issue
Block a user