package Models
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"database/sql"
							 | 
						|
									"time"
							 | 
						|
								
							 | 
						|
									"github.com/gofrs/uuid"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								// MessageData holds the content of the message
							 | 
						|
								// encrypted through the Message.SymmetricKey
							 | 
						|
								type MessageData struct {
							 | 
						|
									Base
							 | 
						|
									Data         string     `                json:"data"` // Stored encrypted
							 | 
						|
									AttachmentID *uuid.UUID `                json:"attachment_id"`
							 | 
						|
									Attachment   Attachment `                json:"attachment"`
							 | 
						|
									SenderID     string     `gorm:"not null" json:"sender_id"`     // Stored encrypted
							 | 
						|
									SymmetricKey string     `gorm:"not null" json:"symmetric_key"` // Stored encrypted
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								// Message holds data pertaining to each users' message
							 | 
						|
								type Message struct {
							 | 
						|
									Base
							 | 
						|
									MessageDataID  uuid.UUID    `                       json:"message_data_id"`
							 | 
						|
									MessageData    MessageData  `                       json:"message_data"`
							 | 
						|
									SymmetricKey   string       `gorm:"not null"        json:"symmetric_key"`   // Stored encrypted
							 | 
						|
									AssociationKey string       `gorm:"not null"        json:"association_key"` // Stored encrypted
							 | 
						|
									ExpiryRaw      string       `                       json:"expiry"`
							 | 
						|
									Expiry         sql.NullTime `                       json:"-"`
							 | 
						|
									CreatedAt      time.Time    `gorm:"not null"        json:"created_at"`
							 | 
						|
								}
							 |