All checks were successful
Build and Release / release (push) Successful in 1m6s
83 lines
2.3 KiB
Go
83 lines
2.3 KiB
Go
package models
|
|
|
|
import (
|
|
"encoding/json"
|
|
"history-api/internal/dtos/response"
|
|
"time"
|
|
)
|
|
|
|
type MediaEntity struct {
|
|
ID string `json:"id"`
|
|
UserID string `json:"user_id"`
|
|
StorageKey string `json:"storage_key"`
|
|
OriginalName string `json:"original_name"`
|
|
MimeType string `json:"mime_type"`
|
|
Size int64 `json:"size"`
|
|
FileMetadata json.RawMessage `json:"file_metadata"`
|
|
CreatedAt *time.Time `json:"created_at"`
|
|
UpdatedAt *time.Time `json:"updated_at"`
|
|
}
|
|
type MediaSimpleEntity struct {
|
|
ID string `json:"id"`
|
|
StorageKey string `json:"storage_key"`
|
|
OriginalName string `json:"original_name"`
|
|
MimeType string `json:"mime_type"`
|
|
Size int64 `json:"size"`
|
|
FileMetadata json.RawMessage `json:"file_metadata"`
|
|
CreatedAt *time.Time `json:"created_at"`
|
|
}
|
|
|
|
type MediaStorageEntity struct {
|
|
ID string `json:"id"`
|
|
StorageKey string `json:"storage_key"`
|
|
}
|
|
|
|
func (e *MediaEntity) ToStorageEntity() *MediaStorageEntity {
|
|
return &MediaStorageEntity{
|
|
ID: e.ID,
|
|
StorageKey: e.StorageKey,
|
|
}
|
|
}
|
|
|
|
func (e *MediaEntity) ToResponse() *response.MediaResponse {
|
|
return &response.MediaResponse{
|
|
ID: e.ID,
|
|
UserID: e.UserID,
|
|
StorageKey: e.StorageKey,
|
|
OriginalName: e.OriginalName,
|
|
MimeType: e.MimeType,
|
|
Size: e.Size,
|
|
FileMetadata: e.FileMetadata,
|
|
CreatedAt: e.CreatedAt,
|
|
UpdatedAt: e.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
func (e *MediaEntity) ToSimpleEntity() *MediaSimpleEntity {
|
|
return &MediaSimpleEntity{
|
|
ID: e.ID,
|
|
StorageKey: e.StorageKey,
|
|
OriginalName: e.OriginalName,
|
|
MimeType: e.MimeType,
|
|
Size: e.Size,
|
|
FileMetadata: e.FileMetadata,
|
|
CreatedAt: e.CreatedAt,
|
|
}
|
|
}
|
|
|
|
func MediaEntitiesToResponse(entities []*MediaEntity) []*response.MediaResponse {
|
|
responses := make([]*response.MediaResponse, len(entities))
|
|
for i, entity := range entities {
|
|
responses[i] = entity.ToResponse()
|
|
}
|
|
return responses
|
|
}
|
|
|
|
func MediaEntitiesToStorageEntity(entities []*MediaEntity) []*MediaStorageEntity {
|
|
responses := make([]*MediaStorageEntity, len(entities))
|
|
for i, entity := range entities {
|
|
responses[i] = entity.ToStorageEntity()
|
|
}
|
|
return responses
|
|
}
|