50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package models
 | |
| 
 | |
| import (
 | |
| 	"gorm.io/datatypes"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| type AttachmentDst = int8
 | |
| 
 | |
| const (
 | |
| 	AttachmentDstTemporary = AttachmentDst(iota)
 | |
| 	AttachmentDstPermanent
 | |
| )
 | |
| 
 | |
| type Attachment struct {
 | |
| 	BaseModel
 | |
| 
 | |
| 	// Random ID is for accessing (appear in URL)
 | |
| 	Rid string `json:"rid" gorm:"uniqueIndex"`
 | |
| 	// Unique ID is for storing (appear in local file name or object name)
 | |
| 	Uuid string `json:"uuid"`
 | |
| 
 | |
| 	Size        int64         `json:"size"`
 | |
| 	Name        string        `json:"name"`
 | |
| 	Alternative string        `json:"alt"`
 | |
| 	MimeType    string        `json:"mimetype"`
 | |
| 	HashCode    string        `json:"hash"`
 | |
| 	Destination AttachmentDst `json:"destination"`
 | |
| 	RefCount    int           `json:"ref_count"`
 | |
| 
 | |
| 	FileChunks datatypes.JSONMap `json:"file_chunks"`
 | |
| 
 | |
| 	CleanedAt *time.Time `json:"cleaned_at"`
 | |
| 
 | |
| 	Metadata   datatypes.JSONMap `json:"metadata"`
 | |
| 	IsMature   bool              `json:"is_mature"`
 | |
| 	IsAnalyzed bool              `json:"is_analyzed"`
 | |
| 	IsUploaded bool              `json:"is_uploaded"`
 | |
| 	IsSelfRef  bool              `json:"is_self_ref"`
 | |
| 
 | |
| 	Ref   *Attachment `json:"ref"`
 | |
| 	RefID *uint       `json:"ref_id"`
 | |
| 
 | |
| 	Pool   *AttachmentPool `json:"pool"`
 | |
| 	PoolID *uint           `json:"pool_id"`
 | |
| 
 | |
| 	Account   Account `json:"account"`
 | |
| 	AccountID uint    `json:"account_id"`
 | |
| }
 |