74 lines
2.6 KiB
Go
74 lines
2.6 KiB
Go
package contract
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type ListFilesQuery struct {
|
|
OrganizationID string `form:"organization_id"`
|
|
UserID string `form:"user_id"`
|
|
FileType string `form:"file_type"`
|
|
IsPublic string `form:"is_public"`
|
|
DateFrom string `form:"date_from"`
|
|
DateTo string `form:"date_to"`
|
|
Search string `form:"search"`
|
|
Page int `form:"page,default=1"`
|
|
Limit int `form:"limit,default=10"`
|
|
}
|
|
|
|
// Request DTOs
|
|
type UploadFileRequest struct {
|
|
FileType string `json:"file_type" validate:"required"`
|
|
IsPublic *bool `json:"is_public,omitempty"`
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type UpdateFileRequest struct {
|
|
IsPublic *bool `json:"is_public,omitempty"`
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type ListFilesRequest struct {
|
|
OrganizationID *uuid.UUID `json:"organization_id,omitempty"`
|
|
UserID *uuid.UUID `json:"user_id,omitempty"`
|
|
FileType *string `json:"file_type,omitempty"`
|
|
IsPublic *bool `json:"is_public,omitempty"`
|
|
DateFrom *time.Time `json:"date_from,omitempty"`
|
|
DateTo *time.Time `json:"date_to,omitempty"`
|
|
Search string `json:"search,omitempty"`
|
|
Page int `json:"page" validate:"required,min=1"`
|
|
Limit int `json:"limit" validate:"required,min=1,max=100"`
|
|
}
|
|
|
|
// Response DTOs
|
|
type FileResponse struct {
|
|
ID uuid.UUID `json:"id"`
|
|
OrganizationID uuid.UUID `json:"organization_id"`
|
|
UserID uuid.UUID `json:"user_id"`
|
|
FileName string `json:"file_name"`
|
|
OriginalName string `json:"original_name"`
|
|
FileURL string `json:"file_url"`
|
|
FileSize int64 `json:"file_size"`
|
|
MimeType string `json:"mime_type"`
|
|
FileType string `json:"file_type"`
|
|
UploadPath string `json:"upload_path"`
|
|
IsPublic bool `json:"is_public"`
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type ListFilesResponse struct {
|
|
Files []*FileResponse `json:"files"`
|
|
TotalCount int `json:"total_count"`
|
|
Page int `json:"page"`
|
|
Limit int `json:"limit"`
|
|
TotalPages int `json:"total_pages"`
|
|
}
|
|
|
|
type UploadFileResponse struct {
|
|
File FileResponse `json:"file"`
|
|
}
|